21xrx.com
2024-12-22 18:35:42 Sunday
登录
文章检索 我的文章 写文章
C++函数参数传递:了解传值、传引用和传指针的区别
2023-07-04 16:11:02 深夜i     --     --
C++ 函数参数传递 传值 传引用 传指针

在程序开发中,函数是常用的代码块,它们可以重复使用,在不同的程序中使用。在函数中,参数传递是必要的,因为参数决定着函数的行为。有三种不同的参数传递方式:传值、传引用和传指针。

传值是指在调用函数时,将参数的值复制到函数的形参中。这样在函数内部对形参的修改不会影响到实参的值,因为实参和形参是两个完全不同的变量。这种方式比较简单,适用于传递简单的数据类型(如int、float等)。

例如:


void swap(int a, int b)

  int t = a;

  a = b;

  b = t;

int main()

{

  int x = 1, y = 2;

  swap(x, y);

  cout << x << " " << y << endl;

  return 0;

}

在这个例子中,虽然在交换函数swap中,a和b的值交换了,但由于传递的是值,所以在函数外部x和y的值并没有发生变化,仍然是1和2。

与传值不同,传引用是指在调用函数时,将参数的地址传递到函数的形参中。这样在函数内部对形参的修改会直接影响到实参的值,因为实参和形参是同一个变量。这种方式适用于传递大型的数据结构类型(如数组、类等)。

例如:


void swap(int &a, int &b)

  int t = a;

  a = b;

  b = t;

int main()

{

  int x = 1, y = 2;

  swap(x, y);

  cout << x << " " << y << endl;

  return 0;

}

在这个例子中,交换函数swap中的a和b是变量x和y的别名,所以在函数内部交换a和b的值同时也就交换了x和y的值,最终输出2 1。

除了传引用,还有一种参数传递方式是传指针。传指针也是将参数的地址传递到函数的形参中,但是和传引用的区别是需要使用指针运算符*来访问变量的值。这种方式也适用于传递大型的数据结构类型。

例如:


void swap(int *a, int *b)

{

  int t = *a;

  *a = *b;

  *b = t;

}

int main()

{

  int x = 1, y = 2;

  swap(&x, &y);

  cout << x << " " << y << endl;

  return 0;

}

在这个例子中,交换函数swap中的a和b是变量x和y的地址,因此需要使用指针运算符*来访问它们所指向的变量。最终输出2 1,和传引用的结果一致。

总之,了解C++函数参数传递的三种方式可以更好地编写程序。传值是比较简单的传递方式,但传引用和传指针有更广泛的应用,尤其是在处理大型的数据结构时。在实际应用中,建议根据具体情况来选择合适的参数传递方式。

  
  

评论区

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