我知道如果计算机是64位,则int变量占用4个字节。我尝试通过以下代码对此进行测试。
int c = 16;
int f = 11;
NSLog(@"&c = %p &f = %p", &c,&f);
,输出为:
&c = 0x7fff570c8a4c &f = 0x7fff570c8a48
差异是4,这是否意味着变量占用4个字节? int和int变量的指针存储在计算机,堆栈或堆中的哪里?指针和变量存储在不同的地方吗?
我想理解为什么2的地址差异为4。
答案 0 :(得分:4)
我知道如果计算机是64位,那么int变量占用64/8 = 8字节。
一般情况下并非如此。例如,64位Windows系统使用32位int
s。
无论如何,堆栈上变量的位置有些随意,并且不能依赖于确定这些变量的任何内容。尺寸。 (在这种情况下 确实这些变量占用了四个字节,但在所有情况下都不一样。)如果你需要确定" bit-ness"对于程序中的系统,考虑采用指针的大小,例如
sizeof(void *)
对于使用32位地址的系统,这将始终返回4,对于使用64位地址的系统,这将始终返回。
答案 1 :(得分:-4)
是的,它确实意味着变量占用4个字节。您询问的指针存储在堆栈中,用于调用NSLog()。