引入
我们知道,大多数函数都有返回值,可以是整型、字符型等等,其实指针型也可以作为函数的返回值来使用,当然,返回的就是指针,也就是地址。
定义
我们如何定义一个函数呢?
1 | int a ( int x, int y); |
上面,我们定义了一个返回值为整型的函数 a,包含两个参数,x 和 y。如果改成
1 | int *a(int x, int y); |
a 的左右有 和 ( ) ,根据符号优先级,a 先与括号组成一个函数 a,在与号组成一个指针型函数,即这个函数是一个指针函数,返回的值是一个指着你地址,前面的 int ,表示这个函数返回的地址是一个 int 型地址。所以,要定一个一个返回指针值的函数的一般形式是:
类型名 * 函数名 ( 参数列表 )
上面说的可能比较晕,我们通过一个例子来说明。
使用
有3个学生,4门课,要求输入学生号之后,返回学生所有成绩,用指针的方式解决。
1 |
|
我们看到,search 函数的形参,是一个包含4个元素的指针变量,我们通过把二维数组的行地址传递给 search,然后 search 函数将行地址移动到需要的位置,再返回该行地址,通过下标法引用这个行地址中的元素。
我们输入的实参是一组地址,函数将地址移动到我们需要的位置,再把地址返回给主调函数
。这就是返回指针值的函数。
需要注意的是,在上面的例子中,我们操作多维数组,一定要搞清楚,当前操作的是行元素还是列元素,*号该如何添加,如果写错就会出现大问题。
如果我们把上面的 search 函数改为
1 | int *search(int num,int (*p)[4]){ |
请务必注意,不要犯上面的错误。
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。