C++中函数的形参如果为数组的话,那么进行实参传递时,实参实际上换转化成指针。参考下面的例子:
#include<iostream> using namespace std; void fun(int arr[]) { arr[0] = 9; } int main() { int a[] = {1,2,3}; int *b = new int[1]; *b = 2; fun(a); cout<<a[0]<<endl; fun(b); cout<<b[0]<<endl; }
运行结果为:
通过上面的结果可知,
1.数组a的本质就可以看成是一种指向数组首地址的指针。
2.在实参传递的过程中,传给fun函数的实际上是一个指针,这个指针存储的地址与a的首地址相同,所以改变这个指针指向内容的值,数组a的值也会发生改变。但改变这个指针本身,并不会对a产生影响。