这一章,我进入了指针的学习。
指针==地址
指针的引入:
下面,我们通过定义一个 int a =10 要想访问这个变量的值10;有两种方式,第一种是通过变量a访问,第二种就是通过指针来访问。
例1.
指针变量是什么呢? 整型数变量是存放整型数的变量 字符变量是存放字符型数据的变量
所以指针变量就是存放指针的变量 ,又因为指针就是地址,所以指针变量就是存放地址的变量
如何定义一个指针变量呢? 例如 : int *p 定义一个指针变量,存放地址的变量,必须要加*符号,*是一个标识符 。
例2. 变量的访问有两种方式,一种是通过变量名访问的,称为“”直接访问“”方式,另一种称为“”间接访问“”方式,即将变量a的地址存放在另一个变量P中,然后通过P变量找到变量a的地址,从而访问a的变量
既然指针变量是存放别人的地址变量,那为什么还要区分类型呢? 下面我们通过例子3来看一下就清楚了。
例3.
从编译结果就可以看出p的值和c的值是不一样的,虽然是p指针和c指针是存放相同的地址,但是由于是不同类型的指针,所以取出来的值也不一样。不同类型的指针的相当于不同的印章,它是什么类型就对应什么样的印章。
接下来我们介绍为什么需要用到指针
第一种场景,交换两个数,通过封装一个change函数把a跟b的地址传过去。如果是把a跟b的值传过去的话是实现不了两个数的交换的,因为他们在change函数里是属于临时变量,地址不一样,作用不到main函数中。
第二种场景是指针指向固定的区域 ,对于后面的单片机跟armbootloader有很大用处。
最后做一个练习题:输入三个数abc,不管怎么输入,在输出的时候是由从大到小的顺序输出,函数封装实现 。
指针的初步了解就到此,我们下一章继续对指针做进一步的了解,文章如有错误的地方请各位朋友多多指正交流!!!