指针作为C语言中重要而且较难理解的一个知识点,初学者学习起来较为困难,我从几个点中来谈一下对C语言指针的理解,首先,平时我们所说的指针都叫指针变量,里面存放的的呢,就是内存和地址,所以便有了&(取地址操作符),在C语言中,创建变量就是向内存申请空间,通过&操作符拿出来的地址需要存放到指针变量中,而指针变量存放需要一个类型来存放,就是指针指向的对象,即需要解引用操作符“ * ”,当然也可以void*修饰指针,代表无类型指针;当然,指针也是可以进行运算的,如指针+-整数,指针+-指针,指针之间也存在彼此的运算关系。
指针虽好,但是也必须要避免野指针和指针越界的出现,我们可以用NULL来初始化指针。
指针和数组也有彼此的运用关系,数组名是数组第一个元素的地址,知道这个之后,很多操作都可以很方便的实现,这个操作又叫指针访问数组,之后又学习了一维数组和函数之间的传参方法。
这时候又学到一个知识点叫做二级指针,**p,这之间关系顺序容易把人绕晕。随后,指针数组到来,存放指针的数组,但本质上还是一个数组。
随之是数组指针变量,形式是int (*p)[10];P和*结合,说明P是一个指针变量,然后指向刚大小为10的整形数组,所以P是一个指针,指向一个数组。之后一个重头戏函数指针变量来了,这一个个的交换当时真的把我绕晕,这个知识点学了三四天才搞定,但本质上并不难,之后是函数指针数组,这一对对的交换分配(—---—);随后学习了qsort这个很有趣的函数,开始嘎嘎敲代码,之后的sizeof和strlen 的使用也比较简单,差不多初识了指针吧,继续努力!