嗯... 我以前也挺好奇内存中是怎么回事的, 其实还可以定义一个 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是不连续的, 至于为什么有的连续有的不连续我就不知道了...
|