char c[] = {'a','b','c'};
int* p = &c[0];
printf("%i\n", sizeof(*p)); //Prints out 4
printf("%i\n", sizeof(*c)); //Prints out 1
我对这段代码感到非常困惑。 p 和 c 都表示数组 c 在第 0 个索引处的地址。但是为什么 sizeof(*p) 打印出 4 呢?不应该是1吗?
Because p
属于类型int *
, so *p
属于类型int
,这在您的实现中显然是 4 个字节宽。
And use %zu
用于印刷size_t
(what sizeof
如果您不希望程序调用未定义的行为,则可以使用yields)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)