21xrx.com
2024-09-20 05:05:38 Friday
登录
文章检索 我的文章 写文章
C++函数中指针的应用
2023-06-28 03:16:33 深夜i     --     --
C++函数 指针类型 指针参数 指针引用 动态内存分配

C++函数是将一些代码进行封装以利于代码重用和维护的一种方式。在函数的实现中,指针可以起到很大的作用,可以让函数调用更加灵活,代码更加高效。

- 通过指针修改外部变量的值

在C++中,函数的形参默认是按值传递的,也就是将实参的值复制一份传递给函数处理。但是,有时候我们希望在函数内部修改外部变量的值,这时候就可以使用指针。

例如,有如下代码:

int add(int a, int b) {

  a++;

  b++;

  return a + b;

}

int main() {

  int a = 1, b = 2;

  int sum = add(a, b);

  cout << a << " " << b << " " << sum << endl;

  return 0;

}

输出结果为:1 2 5。

可以看到,函数add虽然修改了a和b的值,但是在主函数中并没有起到作用。如果我们想要修改主函数中的a和b的值,就可以将a和b的地址作为参数传入函数,并在函数中通过指针修改它们的值。

int add(int* pa, int* pb) {

  (*pa)++;

  (*pb)++;

  return (*pa) + (*pb);

}

int main() {

  int a = 1, b = 2;

  int sum = add(&a, &b);

  cout << a << " " << b << " " << sum << endl;

  return 0;

}

输出结果为:2 3 5。

可以看到,通过指针的方式,函数成功修改了a和b的值。

- 指针作为函数的返回值

在C++中,指针可以作为函数的返回值,这种方式可以让函数的返回值更加灵活,适用于不同的场景。

例如,有如下代码:

int* max(int* pa, int* pb) {

  return (*pa > *pb) ? pa : pb;

}

int main() {

  int a = 1, b = 2;

  int* pmax = max(&a, &b);

  cout << *pmax << endl;

  return 0;

}

输出结果为:2。

可以看到,通过max函数的返回值,我们成功得到了a和b中的最大值。

- 指针与动态内存分配

在C++中,使用new关键字可以在堆内存中动态地分配内存空间。当需要在函数中使用动态内存分配时,指针就可以发挥重要作用。

例如,有如下代码:

int* createArray(int n) {

  int* p = new int[n];

  for (int i = 0; i < n; i++) {

    *(p + i) = i;

  }

  return p;

}

int main() {

  int* parray = createArray(5);

  for (int i = 0; i < 5; i++) {

    cout << *(parray + i) << " ";

  }

  cout << endl;

  delete[] parray;

  return 0;

}

输出结果为:0 1 2 3 4。

可以看到,通过createArray函数的调用,我们成功地在堆内存中分配了大小为5的整型数组,并成功访问了它的元素。

综上所述,指针在C++函数中具有广泛而重要的应用,对于提高程序效率、灵活性、可读性等方面都有很大的帮助作用。通过合理地应用指针,能够使C++代码更加高效、优美。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复