码迷,mamicode.com
首页 > 其他好文 > 详细

指针函数

时间:2015-07-18 00:39:04      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:函数   二维数组   指针函数   

指针函数是指函数的返回值是指针类型的函数。一个函数的返回值可以是整数,实型和字符类型,也可以是指针类型。指针类型的定义形式举例如下:

float* fun(int a,int b);

其中,fun是函数名,前面的“*”说明返回值的类型是指针类型,因为前面的类型标识是float,所以返回的指针指向浮点型。该函数有两个参数,参数类型是整型。

通过一个题目学校指针函数的用法。

例如:假设若干个学生的成绩在二维数组中存放,要求输入学生的编号,用指针函数实现其成绩的输出。

分析:主要考察指针函数的使用。学生成绩放在二维数组中,一行存放一个学生的成绩,通过输入学生编号,返回该学生存放成绩的地址,然后利用指针访问学生的每一门课程成绩,并输出。

程序实现如下:

#include<stdio.h>
int *FindAddress(int (*ptr)[4],int n);//声明查找成绩行地址函数
void Display(int a[][4],int n,int *p);//声明输出成绩函数
int main()
{
	int row,n=4;
	int *p;
	int score[3][4]={{76,87,85,81},{67,61,71,60},{81,89,82,78}};
	printf("请输入学生的编号(1或2或3).输入0退出程序.\n");
	scanf("%d",&row);//输入要输出学生成绩的编号
	while(row)
	{
		if(row==1||row==2||row==3)
		{
			printf("第%d个学生的成绩4门课的成绩是:\n",row);
			p=FindAddress(score,row-1);//调用指针函数
			Display(score,n,p);//调用输出成绩函数
			printf("请输入学生的编号(1或2或3).输入0退出程序");
	        scanf("%d",&row);
		}
		else
		{
            printf("输入不合法,重新输入(1或2或3).输入0退出程序");
	        scanf("%d",&row);
		}
	}
	return 0;
}
int* FindAddress(int (*ptrScore)[4],int n)//查找学生成绩行地址函数的实现
//通过传递的行地址找到要查找学生成绩的地址,并返回行地址
{
	int *ptr;
	ptr=*(ptrScore+n);//修改行地址,即找到学生的第一门课成绩的地址
	return ptr;
}
void Display(int a[][4],int n,int *p)
//输出学生成绩的实现函数。利用传递过来的指针输出每门课的成绩
{
	int col;
	for(col=0;col<n;col++)
	     printf("%5d",*(p+col));//输出查找学生的每门课成绩
	printf("\n");
}
程序运行结果:

技术分享

在程序中,主函数通过调用函数FindAddress(score,row-1),把二维数组的行地址传递给*FindAddress(int (*ptrScore)[4],int n)的形式参数ptrScore,执行语句ptr=*(ptrScore+n),然后返回行指针ptr,调用Display(score,n,p)输出成绩,p+col

是改变列地址,即找到该学生成绩的每门课的位置,逐个输出每门课成绩。

版权声明:本文为博主原创文章,未经博主允许不得转载。

指针函数

标签:函数   二维数组   指针函数   

原文地址:http://blog.csdn.net/weichanjuan3/article/details/46933979

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!