c/c++ 参数传递 - 数组
对于函数参数中的数组类型:传递的是数组地址,可以理解成传递的是对数组的引用。不是值传递,这是由C/C++函数实现机制决定的。
一下三种函数生命完全等价:
void func(int array[10])
void func(int array[])
void func(int *array)
测试代码如下:
struct node{ int val; }; void func0(node n){ n.val = 1000; } void func1(node n[2]){ n[0].val = 1111; } void func2(int a[2]) { int t = a[0]; a[0] = a[1]; a[1] = t; } node n0;n0.val = 0; func0(n0); cout<<n0.val<<endl;//nothing changed node n[2]; n[0].val = 0; n[1].val = 0; func1(n); cout<<n[0].val<<endl;//changed
int a[2]; a[0] = 0;a[1] = 1; func2(a); cout<<a[0]<<" "<<a[1]<<endl;//changed
结果发现:不论是结构体数组,还是整形数组,只要是数组,就是引用传递。并且会造成值的修改。