内存:
内存被划分为多个单元格,单个单元格的大小为 1 字节。
向内存申请4字节的空间存储 10
int a = 10;
在生活中,我们住酒店酒店的每一个房间都有一个门牌号,我们可以通过门牌号来找人。
在内存中我们申请了4字节空间存储 10,为方便寻找 10 需要给内存一个编号(地址)。
地址的生成:
在32位的电脑中通过地址线来生成地址,正电为1 负电为0.那32根地址线产生的可能性为2^32
64位的电脑同理,这里以32位做实例
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0001
........
1111 1111 1111 1111 1111 1111 1111 1111
取地址a,为一串16进制数
printf("%p\n",&a);//%p打印地址
10的二进制为:0000 0000 0000 0000 0000 0000 0000 1010
0 0 0 0 0 0 0 a
16进制写法为:0x0000000a
至于为什么是 0a 00 00 00而不是00 00 00 0a 挖坑,学完之后再补
地址是一串16进制数,也可以存起来
int* p = &a;
p就是用来存放地址的 指针变量,p的类型是 int*
内存单元中:
编号--->地址---->地址也被称作指针
存放指针(地址)的变量就是指针变量
*解引用操作符:
*p就可以访问p中存放的地址,找到p所指向的对象,*p就是p指向的对象
*p = 20;
printf("%d\n",a);
补充:&a拿到的字节是申请的4个字节中的最小的一个字节