void func(char *s[]){
printf("s: %d\n", sizeof(s));
}
void caller(){
char *a[2];
for(int i = 0; i < 2; i++){
a[i] = (char *)malloc(50 * sizeof(char));
}
strcpy(a[0], "something");
strcpy(a[1], "somethingelse");
printf("a: %d\n", sizeof(a));
func(a);
}
此输出
a: 16
s: 8
为什么输出是sizeof()
不同之处在于 caller()
和func()
?另外,func
有可能吗?获取 char *
的数量通过 sizeof
在数组中?
最佳答案
其中一个是两个字符指针的数组。另一个是指向指针数组的指针。它们的大小不一样。
关于C 字符串数组 sizeof() 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644163/