今天初步学习了指针,感觉确实有点难。
当我们赋给一个变量一个值时,这个变量就被存储在计算机的内存中,内存可以理想化的划分为若干个空间,每个空间都有其所对应的地址,通过这个地址,我们就可以找到这个内存空间中存储的值。而指针就是用于存放地址的变量,通过指针变量,我们可以得到变量的地址。
include <stdio.h>
int main()
{
int a = 10;
int* b = &a;//*为创建指针变量时用,指定b为指针变量。&为取地址操作符,&a表示变量a的地址
printf("%p\n",&a);//%p为打印地址时用
return 0;
}
代码运行结果
这样一串数字就是变量a的地址,这串数字是十六进制。
关于内存,我们可以引申一下:
对于32位电脑来说,内存会划分为一个个的内存空间用于存放数据,而每个内存空间都会有一个编号,类似于宿舍楼,把一栋宿舍楼比作内存,一个个宿舍就是一个个内存空间,而每个宿舍都有一个门牌号如(505),宿舍的门牌号就对应着内存空间的编号
画的有点丑像闹鬼一样,将就看
32位电脑的编号是由32个由1或0组成的二进制数
00000000000000000000000000000000
00000000000000000000000000000001
00000000000000000000000000000002
......
111111111111111111111111111111111111
一串数字为一个编号,一共有2^32个编号,也就是有2^32个内存空间。因为2进制编号太长,所以电脑中用16进制数来表示编号地址。
这样我们就可以了解到,指针变量就是为了存放变量的地址,通过指针变量,我们可以轻易的查找到变量的地址,并通过地址查找到该变量。