例10.25有若干个学生的成绩(每个学生有4门课程),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。
程序如下:
main()
{float score[ ][4]={{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("enter the numBer of StuDent:");
  scanf("%D",&m);
  printf("The ScoreS of No.%D are:\n",m);
  p=Search(Score,m);
  for(i=0;i<4;i++)
printf("%5.2f\t",(p+i));

float *Search(float (*pointer)[4],int n)
 {float *pt;
pt=*(pointer+n);
return(pt);
  }
运行情况如下:
 enter the number of student:1
   The scores of No.1 are:
56.0089.0067.0088.00
注意:学生序号是从0号算起的。函数search被定义为指针型函数,它的形参pointer是指向包含4个元素的一维数组的指针变量。pointer+1指向score数组第1行。见图9.39。*(pointer+1)指向第1行第0列元素。也就是上一节介绍的指针从行控制转化为列控制了。pt是指针变量,它指向实型变量(而不是指向一维数组)。main函数调用search函数,将score数组的首地址传给pointer(注意score也是指向行的指针,而不是指向列元素的指针)。m是要查找的学生序号。调用search函数后,得到一个地址(指向第m个学生第0门课程),赋给p。然后将此学生的4门课的成绩打印出来。*(p+i)表示此学生第i门课的成绩。