【发布时间】:2012-12-27 01:18:00
【问题描述】:
为什么这个 char 变量的大小等于 1?
int main(){
char s1[] = "hello";
fprintf(stderr, "(*s1) : %i\n", sizeof(*s1) ) // prints out 1
}
【问题讨论】:
-
sizeof(char) = 1,*是地址运算符的值。*s只不过是第一个字符。这就是你的情况h。所以sizeof(*s)=1,有趣的是sizeof(s1) 是6。 -
@GrijeshChauhan ASCII 有
128代码而不是256。 -
@KerrekSB 你知道扩展 ASCII 图表吗?它最多 256 即 0 到 255...
-
我认为 C 不知道扩展的 ASCII 图表。
-
运算符
sizeof产生size_t类型的值。即使忽略您在范围内没有原型的情况下调用“可变参数”函数这一事实,使用"%i"而没有相应的int参数也是错误的。使用"%zu"或强制转换值。哦!并包含正确的标题。