当前位置: 首页 > news >正文

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语言指针操作(七)*指针数组和多重指针 

 

相关文章:

  • 10. Vue 常用的修饰符的作用详解?
  • 第五篇 python 基本语法(一)
  • 猿创征文| JAVA Web的环境部署
  • Python基础(一) | Python的基本语法
  • 110道Java初级面试题及答案(最新Java初级面试题大汇总)
  • 简易版实现vue1.0
  • 6大面试技能树:JAVA基础+JVM+算法+数据库+计算机网络+操作系统,时刻为面试做准备!!
  • sobel算子边缘提取及程序优化(C语言)
  • python数据结构与算法
  • cookie,storage,sesstion区别
  • 学生家乡网页设计作品静态HTML网页—— HTML+CSS+JavaScript制作辽宁沈阳家乡主题网页源码(11页)
  • MKD调试下载的时候提示:Contents mismatch at: xxxxxxxxH (Flash=xxH Required=xxH)
  • 【Python基础入门技能树笔记】数据类型-基本数据类型
  • springboot下使用druid-spring-boot-starter
  • PHREEQC建模及典型案例解析与高阶拓展应用【反向“编译”、“玩转”后处理技术、GibbsStudio和PhreePlo方法】
  • 分享的文章《人生如棋》
  • 10个确保微服务与容器安全的最佳实践
  • bearychat的java client
  • C学习-枚举(九)
  • Mysql数据库的条件查询语句
  • Spring框架之我见(三)——IOC、AOP
  • 程序员最讨厌的9句话,你可有补充?
  • 给初学者:JavaScript 中数组操作注意点
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 推荐一个React的管理后台框架
  • 用jquery写贪吃蛇
  • 7行Python代码的人脸识别
  • linux 淘宝开源监控工具tsar
  • Spring第一个helloWorld
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #pragma预处理命令
  • (06)Hive——正则表达式
  • (7)STL算法之交换赋值
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (day6) 319. 灯泡开关
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十)c52学习之旅-定时器实验
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (算法)前K大的和
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • .form文件_SSM框架文件上传篇
  • .NET Core 项目指定SDK版本
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net mvc 获取url中controller和action
  • .net 生成二级域名
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .NET大文件上传知识整理
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验