返回指针值的函数
返回指针型的数据 即地址
例如: int *(int x,int y), a是函数名,调用它以后能得到一个in * 指针,即整形数据的地址,x 和 y是函数a的形参为整数
定义返回指针的函数一般的形:
类型名 *函数名(参数列表);
下面通过一个例子来初步了解
#include<stdio.h> int main() { float score[][4]={{50,70,80,90},{56,89,67,88},{34,78,90,66}}; float *search(float (*pointer)[4],int n);//函数声明 float *p; int i,k; printf("enter the number of student:"); scanf("%d",&k); printf("The scores of No.%d are:\n",k); p=search(score,k); //调用search函数 返回score[k][0]的地址 for(i=0;i<4;i++) printf("%5.2f\t",*(p+i)); printf("\n"); return 0; } float *search(float (*pointer)[4],int n) //形参pointer是指向包含4个元素的一维数组指针变量 { float *pt; pt=*(pointer+n); return (pt); }
#include<stdio.h> int main() { float score[][4]={{50,70,80,90},{56,89,67,88},{34,78,90,66}}; float *search(float (*pointer)[4]);//函数声明 float *p; int i,j; for(i=0;i<3;i++) //循环三次 { p=search(score+i); if(p==*(score+i)) //如果返回值是score[i][0]的地址 否则返回NULL { printf("No.%d score:",i); for(j=0;j<4;j++) printf("%5.2f ",*(p+j)); //输出core[i][0]~score[i][3]的值 printf("\n"); } } return 0; } float *search(float (*pointer)[4]) //形参pointer是指向包含4个元素的一维数组指针变量 { int i=0; float *pt; pt=NULL; for(;i<4;i++) if(*(*pointer+i)<60)pt=*pointer; //如果有不及格课程,使pt指向score[i][0] return (pt); }