计算机是存储0101的二进制,八个二进制数即是八个比特位,也就等于一个字节。
就好比下图中的十六进制,假设连续声明两个int型的变量a和b,在假设变量a的地址是0x7ffffffffffffff7,而int型的大小是4个字节,所以要占地址空间的0x7ffffffffffffff7、0x7ffffffffffffff8、0x7fffffffffffff9、0x7ffffffffffffffA;而变量b则要从0x7ffffffffffffffB开始一直到0x7ffffffffffffffE,也占四个字节。
在《Linux C语言指针与内存》https://www.imooc.com/learn/394 中第四章的第一、第二小节中有讲。
c++有一个对齐机制,申请的内存应该是某一数的整数倍,在这里是4,所以只能是8
是的,p格式控制符“%p”中的p是pointer(指针)的缩写
在data的内存地址中,此时a的值和b的值都是10,可以说是赋给所以成员
标准对此没有规定,完全由编译器自己实现。自己写代码时不要依赖这种“未指定”的行为。
想要知道你使用的编译器是怎样实现的,就用gdb打印出数据结构看一下吧。