![]()
今天做了一道题,感觉很有趣,题目是下面这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 32 位系统下下面程序的输出结果为多少? void Func(char str_arg[100]) { printf("%d\n", sizeof(str_arg)); }
int main(void) { char str[] = "Hello"; printf("%d\n", sizeof(str)); printf("%d\n", strlen(str)); char*p = str; printf("%d\n", sizeof(p)); Func(str); } A 5 5 4 4 B 6 5 4 4 C 6 5 6 4 D 5 5 5 100
|
然而我选不出来。。。我觉得是 6 5 6 6 才对
于是把程序跑了一遍,毕竟 实践是检验的唯一标准 嘛
结果结果把我惊到了,是 6 5 4 4,如下所示 ;3(留下了菜鸡的泪水)
![运行结果 result]()
不过想想也是应该是,32 位系统指针本来就是占 4 个字节,只是它指向的那个字符串是占了 6 个字节而已啊 ;p