12.有以下程序 :(考察学员对C语言中字符、字符串、以及字符数组等概念的认识水平。难度:中等)

来源:百度知道 编辑:UC知道 时间:2024/06/25 16:46:16
main()
{ char p[]={’a’, ’b’, ’c’}, q[]="abc";
printf("%d %d\n", sizeof(p),sizeof(q));
};
程序运行后的输出结果是
A)4 4 B)3 3 C)3 4 D)4 3
对所有回答人感谢,答案是c为什么

这个问题啊,我来小回答一下
首先,p是一个字符数组。q是一个字符串数组。字符串数组有一个结束字符就是“/0”,一般情况是隐藏的。自动加上的,不用人工干扰,“/0”在字符串数组中是算长度的,q字符数组的长度为4而不是3。 呵呵,明白了吧

C
第一个求变量P占用空间大小
第二个求指针P占用空间大小

回答者: hanyu5649 - 魔法师 四级 10-29 10:48
解说正确

C
p是数组,而q是字符串,有结束符嘛

C,p是一位数组,q是字符串。
在求字符串的所占空间时要注意他后面自动赋了一个'\0'结束.所以要在字符个数的基础上加一。