C语言基础语法第六章指针 demo18_指针函数的概念和实战 例有a个学生,每个学生有b门课程的成绩。要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。

文章介绍了C语言中指针函数的概念,通过一个示例展示了如何定义和使用指针函数来获取指定学生的所有课程成绩。在给定的二维数组表示的成绩表中,用户输入学生序号后,程序返回该学生的成绩地址并遍历输出所有分数。
摘要由CSDN通过智能技术生成

C语言基础语法第六章指针 demo18_指针函数的概念和实战

1.指针函数定义:函数返回的值类型是指针类型,即返回的值是一个地址
在这里插入图片描述

列如:int a(int x,int y);a是函数名,调用它以后能得到一个int型(指向整形数据的指针),即整形数据的地址。

例有a个学生,每个学生有b门课程的成绩。要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
//指针函数定义:函数返回的值类型是指针类型,即返回的值是一个地址

//列如:int *a(int x,int y);a是函数名,调用它以后能得到一个int*型(指向整形数据的指针),即整形数据的地址。

//例有a个学生,每个学生有b门课程的成绩。要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。

int* getPosPerson(int pos,int (*pstu)[4])//定义指针函数,返回指针的函数,返回的值是一个地址
{
	int *p;
	p = (pstu+pos);//指针可以当数组名使用(pstu+pos)等价于scores+pos,这里也就获取了二维数组子数组地址
	//p = (int *)(pstu+pos)
	return p;//返回一个地址
}


int main()
{
	int scores[3][4]={{55,66,77,88},{66,55,99,100},{11,22,33,59}};
	int *ppos;
	int pos;
	printf("请输入你需要看的学生学号数:0,1,2\n");
	scanf("%d",&pos);
	
	ppos = getPosPerson(pos,scores);//传递输入的值 和二维数组首地址(数组名就是数组的地址)scores=scores[0]=scores[0][0]
	for (int i=0;i<4;i++){//通过for遍历子数组0 1 2 中的元素
		printf("%d ",*ppos++);//如果键盘输入0这里ppos的地址是二维数组首地址scores的首地址也就是scores[0]的地址,也就是scores[0][0]的地址
	}
	
	return 0;
}

//作业对例8.25中的学生,找出其中有不及格的课程的学生及其学生号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值