返回指针值的函数

返回指针型的数据 即地址

  例如: 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);
}

 

 

posted @ 2015-04-13 22:19  woaijava  阅读(702)  评论(0编辑  收藏  举报