0%

sizeof(数组名)和sizeof(指针)

今天做了一道题,感觉很有趣,题目是下面这样的

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

Welcome to my other publishing channels