func(char para[100]) { void *p = malloc(100); printf("%d, %d\n", sizeof(para), sizeof(p)); }
4,4
100,4
4,100
100,100
void f(char b[100]){ printf("sizeof in f: %d\n", sizeof(b)); } int main(){ char p[100]; printf("sizeof in main: %d\n", sizeof(p)); f(p); }
数组做参数,会退化为指针
void* p = malloc(100);
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
对于形参char para[100],其实参传递进来的是数组的地址,在32位系统中sizeof(para)=4
对于指针p,是连续100字节空间的首地址,sizeof并不知道这个连续空间有多大,sizeof得到的是这个指针变量的大小,是4字节