计算机二级C语言问题

设有定义:char p[] ={'1' , '2', '3'},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是(A).
A.sizeof(p)
B.sizeof(char)
C.sizeof(*q)
D.sizeof(p[0])

问题:为什么答案不是B啊,这个B选项里面就一个char,什么也没有,这还怎么用sizeof计算一个char类型数据呢?

当然选择a,a不能,a是指针,b是最标准的计算出一个char型数据所占字节数的代码

我补充下
sizeof 是运算符,不是函数,所以是编译器去直接计算的,不是运行的时候计算的。

参考GPT和自己的思路:

你的问题有一定的道理,因为我们知道sizeof操作符可以用来计算给定类型所占的字节数。然而,在这个特定的题目中,B选项的语义其实是"计算一个char类型所占的字节数",而不是"计算一个char型数据所占字节数"。

因此,B选项并不是一个错误的选项,但它不符合题目的要求,因为题目所要求的是计算一个char型数据所占的字节数,而不是一个char类型所占的字节数。

所以,正确的答案是A. sizeof(p),因为这个表达式可以计算出整个数组p所占的字节数,即3个字符所占的总字节数,而每个字符占1个字节。

sizeof不就是用来求数据类型的字节数的吗>???????????????? p是数组首元素地址,在sizeof中表示整个数组,

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^