返回指针值的函数,一般定义形式为:
类型名 * 函数名(参数列表) int *a(int x,int y)
a为函数名,调用它以后能得到一个指向整型数据的指针(地址)
() 优先级高于 * ,所以a先与()结合。前边还有个 *,表示此函数是指针型函数(函数值是指针)
例题10-24 有若干个学生的成绩(每个学生有4门课),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数实现。
#include
int main()
{float score[][4]&#61;{{60,70,80,90},{56,89,67,88},{34,78,90,66}};float *search(float (*pointer)[4],int n); float *p;int i,m;printf("ente the number of student:");scanf("%d",&m); printf("The scores of No.%d are:\n",m);p&#61;search(score,m);for(i&#61;0;i<4;i&#43;&#43;)printf("%5.2f\t",*(p&#43;i));printf("\n");return 0;
}
float *search(float (*pointer)[4],int n)
{float *pt;pt&#61;*(pointer&#43;n);return pt;
}
输入&#xff1a;1
结果如图&#xff1a;
例题10-25 对上例中的学生&#xff0c;找出其中不及格课程的学生及其学生号
#includefloat *search(float (*pointer)[4])
{int i;float *pt; pt&#61;*(pointer&#43;1);for(i&#61;0;i<4;i&#43;&#43;)if(*(*pointer&#43;i)<60)pt&#61;*pointer;return pt;
} int main()
{float *p,score[][4]&#61;{{60,70,80,90},{56,89,67,88},{34,78,90,66}};int i,j;for(i&#61;0;i<3;i&#43;&#43;){p&#61;search(score&#43;i); if(p&#61;&#61;*(score&#43;i)){printf("No.%d scores:",i);for(j&#61;0;j<4;j&#43;&#43;)printf("%5.2f ",*(p&#43;j));printf("\n");}} return 0;
}
运行结果&#xff1a;