C语言指针操作(六)*返回指针值的函数

在这里插入图片描述

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 

学习日记

目录

学习日记

前言​编辑

 返回指针值的函数

注意

例1

例2

C语言指针操作


前言

        指针这里分为八个小部分,分别是“指针变量”、“通过指针引用数组”、“*通过指针引用多维数组”、“通过指针引用字符串”、“*指向函数的指针”、“*返回指针值的函数”、“*指针数组和多重指针”、“*动态内存分配与指向它的指针变量” 。   

 返回指针值的函数

类型名 *函数名(参数表列)

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

int *a(int x,int y);

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

注意

        在“*a”两侧没有括号,在a的两侧分别为*运算符和()运算符。而()优先级高于*,因此a先与()结合,显然这是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。最前面的int表示返回的指针指向整型变量。 

例1

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

pointer

score数组

pointer+1

60

70

80

90

56

89

67

88

34

78

90

66

#include <stdio.h>
int main()
{	float score[][4]={
   
   {60,70,80,90},{56,89,67,88},{34,78,90,66}};	
	//定义数组,存放成绩
	float *search(float (*pointer)[4],int n);	//函数声明
	float *p;
	int i,k;
	printf("enter the number of student:");
	scanf("%d",&k);	//输入要找的学生的序号
	printf("The scores of No.%d are:\n",k);
	p=search(score,k);	//调用search函数,返回score[k][0]的地址
	for(i=0;i<4;i++)
		printf("%5.2f\t",*(p+i));	//输出score[k][0]~score[k][3]的值
	printf("\n");
	return 0;
}

float *search(float (*pointer)[4],int n)
//形参pointer是指向一维数组的指针变量
{	float *pt;
	pt=*(pointer+n);	//pt的值是&score[k][0]
	return(pt);
}

例2

        找出上例中有不及格的课程的学生及其学生号。

#include <stdio.h>
int main()
{	float score[][4]={
   
   {60,70,80,90},{56,89,67,88},{34,78,90,66}};
	//定义数组,存放成绩
	float *search(float (*pointer)[4]);	//函数声明
	float *p;
	int i,j;
	for(i=0;i<3;i++)				//循环3次
	{	p=search(score+i);
//调用search函数,如有不及格返回score[i][0]的地址,否则返回NULL
		if(p==*(score+i))
		//如果返回的是score[i][0]的地址,表示p的值不是NULL
		{	printf("No.%d score:",i);
	 		for(j=0;j<4;j++)
				printf("%5.2f  ",*(p+j));
				//输出score[i][0]~score[i][3]的值
	 		printf("\n");
		} 
	}
	return 0; 
}

float *search(float (*pointer)[4])
//定义函数,形参pointer是指向一维数组的指针变量
{	int i=0;
	float *pt;
	pt=NULL;	//先使pt的值为NULL
	for(;i<4;i++)
		if(*(*pointer+i)<60) pt=*pointer;
		//如果有不及格课程,使pt指向score[i][0] 
	return(pt);
}

C语言指针操作

C语言指针操作(一)指针变量

C语言指针操作(二)通过指针引用数组

C语言指针操作(三)*通过指针引用多维数组 

C语言指针操作(四)通过指针引用字符串

C语言指针操作(五)*指向函数的指针

C语言指针操作(六)*返回指针值的函数 

C语言指针操作(七)*指针数组和多重指针 

C语言指针操作(八)*动态内存分配与指向它的指针变量

猜你喜欢

转载自blog.csdn.net/m0_63794226/article/details/126597067