#include<iostream>using namespace std;void fun(char a[]){ int p; p=sizeof(a); cout<<"First is"<<p<<endl;}int main(){ char a[90]; fun(a); int p; p=sizeof(a); cout<<"Here is"<<p<<endl; return 0;}为什么一次是4,一次是90
void fun(char a[]){ int p; p=sizeof(a); cout<<"First is"<<p<<endl;}这里的形参a,类似一个指针,也就是void fun(char* a){ int p; p=sizeof(a); cout<<"First is"<<p<<endl; // sizeof一个指针自然就是4,不管外面传进来的实参数组是多大,这里都是4,而外面的实参就不用解释了吧,90个字节}
数组名字作为函数的参数进行传递,不是把数组元素的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共占同一段内存单元,也就是说形参P实际是实参首地址的长度。实参P则是字符数组a[90]的长度,为九十。