目录
学习指针的开始,先介绍俩个符号,&以及*
对于编程中 int a=1; 这个语句是对a进行一个赋值操作,在这里这个a可以当做成一个变量。他指的是一个空间,要是学习指针之前,一定要对这个空间进行一个了解,刚开始学的时候有可能会认为a是一个值,我们对其进行定义,这么理解是不正确的,a这个变量他代表了一个空间
他指的是这个方块的空间,在计算机里面,可以称作是内存,在这个空间里,我们可以对其进行数值得赋值以及读取。
1.对&符号得理解
&这个符号在使用的时候,我们就可以理解成是取地址。
上述刚刚介绍了a代表的是一个空间也是是计算机的内存空间,那么在使用这个内存空间的时候,要怎么寻找这个内存,这就引入了地址的概念,可以简单举个例子,比如是一个社区,有好多的房子,房子里面住着人,这个人就是我们存储得数据,房子呢就相当于是一个空间,用来保存人这个数值,那怎么找到这个房子呢,就有门牌号,在计算机中也就地址通过这个地址就可以找到所需要操作的内存空间
&a-------得意思就是把a空间的这个所占字节得首地址
对a进行了地址得提取,%d代表是十进制输出,%p代表是十六进制输出
2对*符号的使用
还是社区这个例子,如果我要是我得到了社区中得门牌号,也就是地址,想要对这个地址代表的屋子进行操作,这个时候就是*号的作用,
&a是我们得到了这个空间的首地址,那么要在前面加了一个*,就表示对这个空间进行读取操作
*&a其实表示就是读取a的值,其效果等同于*&a=a,*&进行了一个抵消的操作
3,指针变量
什么是指针,还是社区的那个例子,就比如一个人工智能可以快速找到社区中房子的地址,那么这个指针就可以理解成这个人工智能,只不过他是存储了这个房子的地址,能够快速找到这个地址,指针是具有指向存储空间的形象感
通常的格式就是 int * p; 这个p就代表是指针变量,而且还是一个整数型,这个代表的整数型,就是说明这个指针p指的空间具有四个字节,当然这个int并不是局限的,也可以用double,float等来表示
可以发现,完全可以通过对指针的操作,来对内存空间进行相应的处理
第二个想说明的也是指针变量的字节数,sizeof(int*), sizeof(short*), sizeof(long long*), sizeof(char*), sizeof(double*),对这个几个指针进行求取内存空间,就会发现,得出的都是一样的数值,因为这个数值代表的是计算机的操作系统位数,可以进行对其更改,这个配置管理器可以进行设置
第三点就是想说的指针的移动:根据数据类型不同,移动的步伐大小也不同
可以明显看出char类型的,一次就是移动一位,而int类型就是移动四位,longlong移动的就是8位
所以在使用指针的时候,一定要注意好,他这个指针的类型
第四个就是对指针存储进行算数运算
对这个a的地址进行分析一下,*p以及(*p)+1不需要多说
主要是*(p+1)因为代表的类型是整形,当他加一的时候,就相当于这个整形空间加一,移动的就是4个字节,也是就是上图中的cccccccc这个值,但是不存在什么数值,计算机就默认是-8********,这个要好好理解