c语言,关于返回指针值的函数,如何理解?


#include <stdio.h>
int main()
{
    float score[][4] = {{60, 30, 54, 40}, {69, 53, 75, 88}, {43, 68, 98, 76}};
    float *search(float *(pointer[4]), int n);
    float *p;
    int i, k;
    printf("enter the number of student:\n");
    p = search(score, k);
    for (i = 0; i < 4;i++)
        printf("%5.2f\t", *(p + i));
    printf("\n");
    return 0;
}
float*search(float(*pointer[4]),int n)
{
    float *pt;
    pt = *(pointer + n)   //为什么不是用*pt=*(pointer+n)
    return (pt);
}

pt = *(pointer + n) ?? *(pointer+n)不是得到地址的内容吗?

没看到你的pointer定义呢?
pointer 应该是指针数组 ,,不是数组指针,,也就是说数组元素是指向float类型的指针。
所以*(pointer+n) 是指向float类型的指针
没毛病。

我c++环境里的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float score[][4] = { { 60, 30, 54, 40 },{ 69, 53, 75, 88 },{ 43, 68, 98, 76 } };
float *search(float pointer[][4], int n);
float *p;
int i, k;
printf("enter the number of student:\n");
scanf("%d",&k);
p = search(score, k);
for (i = 0; i < 4;i++)
printf("%5.2f\t", *(p + i));
printf("\n");
system("pause");
return 0;
}
float * search(float pointer[][4], int n)
{
float pt;
pt = (pointer + n); //为什么不是用pt=
(pointer+n)
return (pt);
}