我想弄清楚如何将内存地址分配给每个变量,所以我有以下代码:
#include <stdio.h>
int main() {
int males;
int females;
printf("Address of 'int females': %p\n", (void *)&females);
printf("Address of 'int males': %p\n", (void *)&males);
return 0;
}
当我用cc
编译并运行程序时,我得到了这个输出:
Address of 'int females': 0x7fff54f52b34
Address of 'int males': 0x7fff54f52b38
但我分配int males
和int females
的顺序与地址不同。输出显示int females
地址数字较小,为什么?
我的直觉是看int males
地址0x7fff54f52b34
,然后是4个字节,int females
分配到0x7fff54f52b38
。
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix
答案 0 :(得分:2)
负担在你:你为什么想象有关于局部变量地址的任何规则?根据语言标准,您甚至不允许比较两个地址进行订购。