c语言的指针下篇终于迎来了收尾,那么废话不多说,我们直接进入正题
指针访问数组
函数传参方面
函数的形参(数组)格式:
1.int 数组名[ ]
2.int* 指针变量名
二级指针的底层逻辑
一级指针:
int* p = &a;
二级指针:
在一级指针的基础上,将一级指针的地址,再次存放进指针变量中。
格式:int* pp = p 或 int** pp = p 或int**pp = *p
那么我们来看道题:
可能刚学习到指针的小伙伴会疑惑,什么是节点呀?这不是在为难我吗。既然不知道节点是什么没关系,但是实参和形参是什么,小伙伴们应该都知道吧,指针刚好又是这节课学的,所以嘛,我们还是可以试试的。
首先我们先讲一下实参这边: &plist是这个这个变量名(节点)的地址,因为有个&符号,也就是我们上面写的int* p = &a;
那么我们再来看看pilst以及它对应的*pphead如何理解
首先我们根据之前学的一级指针基础可以发现:2 、3两个是可以互逆的,也就是说&plist的地址给了形参pphead,并且pphead给它“封装”了起来,然后当pphead需要通过地址找到这个变量时,给自己的前面加个星号,以此打开之前自己“封装”好的地址”包裹“,然后根据地址找到之前的变量,看到这里的小伙伴应该已经知道这操作的名字了,没错这就是解引用
那么前两层理解了后最后一层就容易理解了
实参这列的最后一个*plist它是一个一级指针,因此形参这边需要用二级指针来保存实参
看到这里的小伙伴如果还不理解,可以再思考一遍,或者在评论区留言。
那么最后给大家简单介绍一个排序函数
qsort函数
作用:进行数据排序
使用前提条件:排序的数据必须是整型数据
qsort函数的使用模板:
int compare(const void* a, const void* b)
{
return(*(int*)a - *(int*)b);
}
qsort(数组名,数组长度,类型字节,compare);
今天的指针篇到此就完结了,大家看完后,可以做一下笔记。