/*--------利用指向一位数组的指针作为函数的返回值来查找数据-------------------
1.本程序的目的是使用一个数组来代表3门学生的成绩,找出含有不及格学生的成绩,并打印出该学生的所有成绩
2.使用了typedef来替换表示指向一维数组的指针类型,float (*PF)[4]中,PF为指针变量,它所指向
的类型为包含4个float型元素的一维数组,用float (* )[4]来表示,除了变量之外的才是类型,想知道某个变量是什么类型,直接把该变量划掉,剩下的就是变量的类型
----------------------------------------------------------------------------*/
#include <stdio.h>
typedef float (*PF)[4];
int main()
{
float score[][4]={{60,70,80,90},{56,85,67,88},{34,78,90,66}};
PF search(float (* pointer)[4]);
//float (*search(float (* pointer)[4]))[4] ;
float (* p)[4];
int i,j;
/* printf("enter the number of student:");
scanf("%d",&k);
printf("The scores of No.%d are:\n",k);
p=search(score,k);*/
for(i=0;i<3;i++)
{
p=search(score + i);
//printf("%p ",p);
//printf("%p ",score + i);
if(p == (score + i))
{
printf("No.%d score:",i);
for(j=0;j<4;j++)
{
printf("%5.2f ",*(*p+j));
}
printf("\n");
}
}
return 0;
}
//相当于把“search(float (* pointer)[4])”放在了float (* x)[4]中的x处
PF search(float (* pointer)[4])
//typedef float (*PF)[4]不可以写在main函数里面,
//因为预处理替换PF的时候,
//并不会进入main函数先去执行typedef float (*PF)[4];
{
int i=0;
float (* pt)[4];//除去pt后的框架代表基类型,这里代表的是指向含有4个float元素的一维数组的指针
pt = NULL;
for(i=0;i<4;i++)
if(*( *pointer + i)<60)
{
//pointer 的基类型是指向行的指针也传给pt了吗?
//不是的,需要类型匹配才行
//指向行的指针加个*,就变为指向列的指针
pt = pointer;
}
return (pt);
}
C_001-函数返回值类型为指向一维数组的指针
最新推荐文章于 2023-04-15 14:43:17 发布