void func(char *s[]){
printf("s: %dn", 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: %dn", sizeof(a));
func(a);
}
这个输出a: 16
s: 8
为什么caller()
和func()
中sizeof()
的输出不同?此外,func
是否有可能通过sizeof
在数组中获得char *
的数量?
一个是包含两个字符指针的数组。另一个是指向指针数组的指针。
在C/c++中,Array会衰变成指针。Char *s[]是一个指针,指针的大小总是固定为4或8(取决于机器)。