C++中函数的形参为数组时,实质形参是指针

  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产生影响。

原文地址:https://www.cnblogs.com/wangkundentisy/p/8808601.html