C_001-函数返回值类型为指向一维数组的指针

/*--------利用指向一位数组的指针作为函数的返回值来查找数据-------------------
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);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值