实例说明:
有4个学生的四科考试成绩,摘除至少有一科不合格的学生,并将成绩列表输出。
实现过程:
#include <iostream>
using namespace std;
int *find(int (*p)[4])
{
int i,*pt,t=0;
pt=*(p+1); //获取下一行的首地址
for(i=0;i<4;i++)
{
if(*(*p+i)<60)
{
pt=*p; //指向本行首地址
}
}
return (pt); //返回首地址
}
int main()
{
int a[][4]={{90,99,98,99},{88,78,89,90},{67,65,56,55},{34,89,90,99}};
int i,*p,j;
for(i=0;i<4;i++)
{
p=find(a+i);
if(p==*(a+i)) //查找有不及格的行
{
cout<<"The student NO."<<i+1<<" list:";
for(j=0;j<4;j++)
cout<<*(p+j)<<",";
cout<<endl;
}
}
}
输出结果:
技术要点:
本实例中定义一个指针函数,这类函数返回值为指针型数值(即一个地址);
该函数定义为:
int *find(int (*p)[4]);
在程序代码中,调用是:
p==*(a+i)
变量p是一个整型指针,该函数返回一个指向整型变量的指针。