当我做
int k = 9;
printf("sizeof k: %zu \n", sizeof (&k));
Run Code Online (Sandbox Code Playgroud)
我得到的大小8.但是,当我这样做
printf("pointer to k: %p \n", &k);
Run Code Online (Sandbox Code Playgroud)
我得到0x7fff57e3ba24.我可以看到这是12个十六进制数字,这意味着(因为1个十六进制是4位)指针占用48位,即6个字节.
问题:为什么sizeof打印8指针虽然只有6个字节?
你的逻辑是,如果我写
printf("%d", 4);
Run Code Online (Sandbox Code Playgroud)
它打印1个十进制数字,可能存储在1个字节中,然后sizeof(int)必须是1个字节.
数字0x7fff57e3ba24与0x00007fff57e3ba24.相同.仅仅因为数字恰好比类型可以存储的数字少,并不意味着它占用的空间更少.
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |