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()
的{{1}}输出有所不同?此外,func()
是否可以通过func
获取数组中char *
的数量?
答案 0 :(得分:0)
一个是两个字符指针的数组。另一个是指向指针数组的指针。它们的大小不一样。
答案 1 :(得分:0)
在C / C ++中,Array decays into a pointer。char * s []是一个指针,指针的大小总是固定为4或8(取决于机器)。