指针函数
2015-07-17 23:14
162 查看
指针函数是指函数的返回值是指针类型的函数。一个函数的返回值可以是整数,实型和字符类型,也可以是指针类型。指针类型的定义形式举例如下:
float* fun(int a,int b);
其中,fun是函数名,前面的“*”说明返回值的类型是指针类型,因为前面的类型标识是float,所以返回的指针指向浮点型。该函数有两个参数,参数类型是整型。
通过一个题目学校指针函数的用法。
例如:假设若干个学生的成绩在二维数组中存放,要求输入学生的编号,用指针函数实现其成绩的输出。
分析:主要考察指针函数的使用。学生成绩放在二维数组中,一行存放一个学生的成绩,通过输入学生编号,返回该学生存放成绩的地址,然后利用指针访问学生的每一门课程成绩,并输出。
程序实现如下:
在程序中,主函数通过调用函数FindAddress(score,row-1),把二维数组的行地址传递给*FindAddress(int (*ptrScore)[4],int n)的形式参数ptrScore,执行语句ptr=*(ptrScore+n),然后返回行指针ptr,调用Display(score,n,p)输出成绩,p+col
是改变列地址,即找到该学生成绩的每门课的位置,逐个输出每门课成绩。
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
是改变列地址,即找到该学生成绩的每门课的位置,逐个输出每门课成绩。
相关文章推荐
- [POJ3748]位操作[位运算]
- System.exit(0)和System.exit(1)区别
- qmake概念
- Gradle Tips#1-tasks
- Hadoop—Hadoop1.X和2.X安装
- 面试题整理-01
- Java Map
- 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
- 数据结构之String
- 求旋转数组的最小值
- 2015071704 - 理想
- 数据结构之String
- Android之判断某个服务是否正在运行的方法
- 【leetcode c++】83 Remove Duplicates from Sorted List
- SQL数据库-TSQL语法实例介绍
- iOS技术点杂记--有一天我也会成为大牛
- objcetive-c学习笔记之 字符串
- Java 异常分类
- struts2核心(3)——访问ValueStack
- 2015071703 - 人生的主旋律