一个函数可以返回一个整形值、字符值、实型值等,也可以返回指针型的数据,即地址。
这种返回指针值的函数,一般定义形式为
类型名 * 函数名 ( 参数列表 ) 例如 int *a( int x,int y);
a 是函数名,调用它以后能得到一个指向整形数据的指针(地址)。( ) 的优先级高于 * 所以a(int x,int y)是函数,前面加个 *,表示此函数是指针型函数(函数值是指针)。最前面的 int 表示返回的指针指向整形变量。
例:有若干学生的成绩(每个学生有4门成绩),要求在用户在输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。
函数 float *search( float (*pointer)[4] , int n ); search 被定义为指针型函数,它的形参 float (*pointer)[4] 中 pointer是指向包含4个float元素的一维数组的 指针变量。pointer+1 指向 score 数组序号为1的行。*(pointer + 1)指向1行0列元素,加了 * 号后,指针从行控制转化为了列控制。search函数中的 pt 是指向实型变量(而不是指向一维数组)的指针变量。main 函数调用 search 函数,将score数组的首行地址传递给形参pointer(注意score也是指向行的指针,而不是指向列元素的指针)。m是要查找的学生序号。调用search函数后,得到一个地址(指向第m个学生第0门成绩),返回给p。然后将此学生的4门成绩输出。注意 p 是指向列元素的指针变量,*(p+i)表示该学生的第 i 门成绩。注意指针变量p,pt和pointer的区别。
小黑屋|手机版|Archiver|鱼C工作室
( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)
GMT+8, 2025-7-16 19:08
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.