嗯... 我以前也挺好奇内存中是怎么回事的, 其实还可以定义一个 char* 类型的指针, 把 a 后面地址中的内存*逐个字节*的打印出来看一下, 
 
char *p = (char *)&a;         // 从 a 的地址开始  
for (int i = 0; i < 7; i++)    // 一共查看7个字节的内容 
{ 
        // 因为p是char*, 所以每次p+1就过一个字节 
        printf("%d\n", *(p+i));    // 读取每个字节的内容, 并打印出它对应的整数值 
} 
 
打印出来会发现, 前4个字节都是负数 (-65的二进制码占的四个字节), 第五个字节是0, 第六个才是111, 即'o', 第七个是107, 即'k'. 
 
反正, 关键就是, 变量不总是连续存储的 
c1和a是连续的, a和c是不连续的, 至于为什么有的连续有的不连续我就不知道了... 
 
 |