求大神指正 本人小白一枚``

void search(float (*pointer)[4],int n){
printf("成绩为");
float *m;
m = *(pointer + n) ;
for (int i = 0; i < 4; i ++){
printf("%f",
(m+ i));
}
}
int main(int argc, const char * argv[]) {

float score[][4] = {{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int n;
printf("输入查找的学生序号");
scanf("%d",&n);
search(score, n);
    return 0;
    }

为什么会报错control reaches end of non-void function

我没有发现你报的错误。简单调整了几处代码,在mingw和vs2010上编译通过并运行正确:

#include <cstdio>
using namespace std; //前面这两句是我加的。
void search(float (*pointer)[4],int n){
    printf("成绩为");
    float *m;
    m = *(pointer + n) ;
    for (int i = 0; i < 4; i ++){
        printf("%f ",*(m+ i));//这个地方我把(m+i)改成了*(m+i)
    }
}
int main(int argc, const char * argv[]) {
    float score[][4] = {{60,70,80,90},{56,89,67,88},{34,78,90,66}};
    int n;
    printf("输入查找的学生序号");
    scanf("%d",&n);
    search(score, n);
  return 0;
}