sizeof的问题

#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
最新回答
沉鱼落雁

2025-03-30 17:49:44

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个字节
}
朕射你无罪

2025-03-30 18:15:27

数组名字作为函数的参数进行传递,不是把数组元素的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共占同一段内存单元,也就是说形参P实际是实参首地址的长度。
实参P则是字符数组a[90]的长度,为九十。
杯酒入怀

2025-03-30 09:15:30

P是字符数组a[]的首地址,即P是一个指针变量,fun函数计算的实际是指针所占空间的长度,因此值为四。而第二次则是字符数组的长度,为九十。