【C语言】指针函数

本文深入探讨了C语言中的指针函数,包括其概念和使用方法。通过一个具体的例子展示了如何利用指针函数获取并输出学生成绩。指针函数允许函数返回一个地址,使得可以对内存中的数据进行间接操作。在提供的代码示例中,`getPpos`函数接收学生序号并返回对应成绩数组的指针,从而实现动态访问学生成绩的功能。
摘要由CSDN通过智能技术生成

指针——C的灵魂

一、指针函数认知

  指针函数,说的就是函数,函数的特征点就是返回值为指针。一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型的数据,即地址。其概念与以前类似,只是返回值的类型是指针类型而已。例如:

	int * a(int x, int y);

因为 ( ) () () 优先级更高,所以 a a a 与后面的括号结合,是函数名,调用它以后能得到一个 i n t ∗ int * int 型(指向整型数据)的指针,即整型数据的地址。x和y是函数 a a a 的形参,为整型。

  关于 int *p; int* p;还有一定的说法, int *p;表示定义一个指针变量,而 int* p;表示定义一个变量,这个变量类型是 i n t int int 指针类型。这些区别再C与指针这本书上有详细的讲解。

   既然这样,我们完全可以把指针函数定义成这样:

	int* a(int x, int y);

这样会看的更清晰,这是一个返回值为指针的指针函数。

二、指针函数练习与应用

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

#include<stdio.h>

int* getPpos(int pos, int (*pstu)[4]) //第二形参为一个数组指针
{
	int *p;
	p = *(pstu+pos); //由于pstu为面向父数组的指针,为了解决p和pstu类型不匹配,所以进行*取得面向子数组的指针
	return p; //返回一个指向子数组的指针,即地址
}

int main()
{
	int scores[3][4] = {
		{11,22,33,44},
		{55,66,77,88},
		{34,54,57,87}
	};
	int *ppos;
	int pos;
	printf("请输入你想要查看学生成绩的号数:\n");
	scanf("%d",&pos);
	
	ppos = getPpos(pos, scores);
	for(int i = 0;i<4;i++){
		printf("%d ",*ppos++);
	}
	
	return 0;
}

运行结果:
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT阳晨。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值