指针函数

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

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

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

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

时间: 2024-08-05 22:30:30

指针函数的相关文章

数组指针、指针数组、函数指针、指针函数 -----笔记

1.数组的四种访问方式 定义数组 a[]; 指针 *p 指向数组a; (1) 利用数组的下表进行访问 a[i]; (2) 数组名+地址的偏移量i *(a+i) (3) 利用指针 p 进行下表访问 p[i] (4) 指针p + 地址的偏移量i *(p+i) 一维数组数组名:相当于一个单指针 2. 数组指针(指针)     指针数组(数组) 函数指针(指针)     指针函数(函数)    -------->只看后边两个字就能够区分是指针还是数组或函数 _______________________

【转】 指针函数与函数指针的区别

一. 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 表示: float *fun();

函数指针和指针函数

(1)函数指针 函数指针就是指向函数的指针变量,即本质是一个指针变量. int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 指向函数的指针包含了函数的地址,可以通过它来调用函数.声明格式如下:        类型说明符 (*函数名)(参数) (2)指针函数 指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y);

指针函数与函数指针

指针函数与函数指针:函数名之前的指针×是不是被括号包含,如果被包含就是函数指针,反之则是指针函数. 1.指针函数是指带指针的函数,即本质是一个函数,函数返回时某一个类型的指针 类型符 *函数名(参数名) 指针函数的返回值是一个地址值,指针函数一定有函数返回值,而至在主调函数中函数返回值必须赋值给同类型的指针变量: float *fun(); float *p = fun(); 2.函数指针是指向函数的指针变量,即本质是一个指针变量 int (*f)(int x) f =func; 指向函数的指针

【C/C++学院】0726-cppIDE/一级指针/指针数组/函数指针/函数指针数组/二级指针

[送给在路上的程序员] 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步. 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现. 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我. cppIDE 使用mfc和codeblocks中的mingw编译器.执行system命令中的bat批处理脚本. 一级指针 指针,结构体struct,

深入理解 [指针函数] 、[函数指针]、[指针的指针]、[指向指针数组的指针]

指针函数 1.指针函数是指带指针的函数,即本质是一个函数.当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中. 函数返回类型是某一类型的指针: 格式: 类型标识符  *函数名(参数表) int *match(void *key_x,void *key_y); 解析:首先来说它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针

函数指针与指针函数返回值的区别

指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针定义: 类型标识符 *函数名(参数表)eg: int *f(x,y);函数指针是指向函数的指针变量,即本质是一个指针变量.int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 函数指针与指针函数返回值的区别,码迷,mamicode.com

函数指针与指针函数

一. 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 表示: float *fun();

【C语言】用指针函数完成:有a个学生,每个学生有b门课。要求在输入学生序号后输出该学生成绩

//用指针函数完成:有a个学生,每个学生有b门课.要求在输入学生序号后输出该学生成绩 #include <stdio.h> float * search(float (* pointer )[4],int n) //形参pointer是一个数组指针 { float *pt; pt=*(pointer+n); return pt; } int main() { float score[][4]={{60,70,80,90},{56,57,78,85},{75,45,36,85}}; float

深入理解指针—&gt;指针函数与函数指针的区别

一. 在学习过程中发现这"指针函数"与"函数指针"容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 表示: f