内存分配:一个内存单元为一个字节
关于指针变量大小的问题:
1、指针变量大小取决于存放地址需要多大空间
2、地址存放空间跟使用的是64位还是32位平台相关,跟编译器也有关系
如下图示例:
首先,此图调试系统为x86,也就是32位系统,地址存放单元为4字节
a变量地址位0x010FFAE8
&a取的是内存首地址,也就是第一个字节的地址,即0a,0a对应的十进制为10,也对应地址中前三位010
本机调试x86,暂时不知道为什么对应不上
本机x64
二级指针:
1、指针变量p存指针变量的地址,类似套娃,其实就是二级指针,可以看到他们的类型是有所不同的。此写法不常用!
注意写法:
1、p是指针变量,int*是变量类型
2、取地址&也就是取num变量的地址
3、 ‘ * ’的作用就是解引用,理解为解开地址,就是内容,所以是对地址处内存空间内容的操作,所以直接改变了num变量值。
![]()
补充关于指针变量类型大小:
1、此时是32位,因为32位操作系统,是因为CPU所能处理的数据的最大位数是32位。而一个字节刚好是8位,因此是4个字节
2、64位操作系统同理
3、具体原因可看此文章为什么一个指针在32位系统中占4个字节,在64位系统中占8个字节? - 高晓牛 - 博客园 (cnblogs.com)
![]()