c语言sort函数_C语言的那些经典程序 第八期

52371bbdd174ac4a763037c999610389.gif戳“在看”一起来充电吧!

2da52b8c80007e1d222beb2b493887b4.png

C语言的那些经典程序 第八期

上期带大家欣赏的指针经典程序,感觉如何?这期我们准备了几个新指针的内容,灵活运用指针可以大大减少程序的复杂度,接下来就让小C来说说这三个有关指针应用的经典程序吧!

1指向函数的指针

源程序:

717533e69eb56b68a8a7279d9d7d0ad0.png

运行结果:

c50c4c251f8c44a988c175905b2891e7.png

程序分析:
(1) main函数中,"int (*p)( int,int );"语句定义了一个指向函数的指针变量p, p所指向的函数必须是int类型。这条语句中的"( int,int ;)";用来说明p所指函数的参数个数和参数类型,这些信息应与p所指函数的参数的信息一一对应, ;如果所指函数没有形参,这对圆括号不可省略。注意,如果将这条语句写成"int *p( int,int);",则说明p不是指针变量,而是说明p是一个函数名,该函数的返回值的类型是基类型为int的指针类型。
(2) main函数中,"p= max;"语句把max函数的起始地址赋给指针变量p.因为是将函数的起始地址赋给p,不涉及实参与形参的结合问题,所以不能写成"p= max(a,b);"。

(3) main函数中,"c =(*p)(a,b);"语句实现对函数的调用。用指向函数的指针变量调用函数时,只需用(*p)代替函数名即可,在(*p)之后的括号中根据需要写上实参。其含义为:调用由p指向的函数,实参为";a,b";,得到的函数值赋给C。这条语句相当于";c= ;max(a,b);";。

2指针数组

源程序:

e1258dc85e35f9b1d1f49d14bbc54dca.png

运行结果:

40b080ba0ba0e4b4a8c46e11d1609c03.png

程序分析:
程序中二维数组a可以看成3个维数组,p_data 是一个有3个元素的指针数组。p_data的作用是用来存放数组a的每行元素的首地址,使指针数组的每个元素p_data[i]指向数组a的相应行。可以用指针数组名p_data 或指针数组元素p_data[i]引用数组a的元素。*(*(p_data+i)+0), ;*p_data[i]、*(p_data[i]+0)或p_data[i][0]表示引用第i行第0列元素a[i][0]; *(*(p_data+i)+j), *(p_data[i]+j)或p_data[i][j]表示引用第i行第j列元素a[i][j]。
指针数组一般与二维数组建立关联,使用时需要注意:定义指针数组的长度与定义一维数组的行数相同。

3选择排序法(指针)

源程序:

14f83bdca05dcfe80ecd0f954e633c2f.png

运行结果:

446127f8b0519d3cc4e6a40df0674da1.png

程序分析:
sort函数实现了选择排序的算法,main函数中调用sort函数,实参为数组名a,将a数组首元素的地址传递给形参指针变量b。在sort函数中引用*(b+k)就是引用实参数组中对应的元素a[k]。sort 函数没有返回值,故其函 数值类型为void。

本期的经典程序就到这里啦,大家是否看过瘾了呢,小C水平有限如果大家有更好的程序希望能积极投稿反映哦,咱们下期再见!

792d05a8ebfb9b4c841cefcceb9d1681.png

投稿邮箱:2080803313@qq.com编辑|排版|钱雄
审校|李倩倩
责任编辑|邱杰 熊克媛
宿州学院信息工程学院学生会出品
如需转载请联系后台

e113a9ef7cc72f01d6263d9dab486f78.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker系列第04部分:查看容器+创建容器+启动容器+文件挂载+删除容器

1 容器的创建和启动 1.1 虚拟机的生命周期 1.2 容器的生命周期 2、容器操作 2.1 查看容器 查看正在运行容器: docker ps 查看所有的容器(启动过的历史容器) docker ps –a 查看最后一次运行的容器: docker ps -l 查看停止的容…

java程序设计及实践实践代码_杭+新闻:姚争为老师把程序设计讲“活”了,满是代码的枯燥课程被学生“秒杀”...

通讯员 陈鑫 杨鹏飞记者 方秀芬作为专业选修课,Java程序设计和Web程序设计,这两门满是代码的课程,看似很枯燥,但在杭师大信息科学与工程学院却爆红,每学期都遭“秒杀”,以前线下课,提前20分钟准…

Docker系列第05部分:实战部署应用全流程

1 MySQL部署 1.1拉取MySQL镜像 docker pull mysql 查看镜像: 1.2创建MySQL容器 docker run -di --namepinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD123456 mysql:5.7 # -p 代表端口映射,格式为 宿主机映射端口:容器运行端口 # -e 代表添加…

Vim安装插件在命令行下看代码

这几天我又想抛弃source insight 了,主要是太慢了 安装如下 VIM万能插件 或者使用 sudo apt-get installexuberant-ctags 安装 我主要是使用函数跳转功能,需要记住几个指令 1、生成tags用来实现函数跳转 这样会生成一个tags文件,作为跳…

Docker系列第06部分:备份与迁移+dockerfile

1 备份与迁移 1.1 容器保存为镜像 docker commit pinyougou_nginx mynginx# pinyougou_nginx是容器名称 # mynginx是新的镜像名称 # 此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器1.2 镜像备份 docker save -o mynginx.tar mynginx #…

流浪地球开机动画包zip_影视日报|合家欢动画电影quot;许愿神龙quot;定档1.15;流浪地球加长版定档11.26...

1、合家欢动画电影"许愿神龙"定档1.15动画电影《许愿神龙》正式定档2021年1月15日,并发布定档海报。2、白客等万万兄弟助力易小星"沐浴之王"由易小星执导,彭昱畅、乔杉领衔主演,卜冠今、苇青主演,金世佳友情出…

Git 分布式版本控制工具01:Git介绍+下载+安装

1. 前言 1.1 什么是Git Git 是一个分布式版本控制工具,通过Git 仓库来存储和管理源代码文件文件。 在IDEA开发工具中可以集成Git: 集成后在IDEA中可以看到Git相关图标: 可以通过启动两个IDEA窗口模拟两个开发人员来展示Git的使用&#xf…

无法解析的外部符号,无法解析的外部命令

1.这个是因为有相关的lib包没有被引用进去 解决办法: 1. 2. 转载于:https://www.cnblogs.com/hcfan/p/6638980.html

Android Adb 源码分析

扭起屁股得意洋洋 最近,我负责的项目因为临近量产,把之前的userdebug版本关闭,转成了user版本,增加selinux的权限,大家都洋溢在项目准备量产的兴奋和喜悦之中不能自拔 谁知,好景不长,user版本…

kvm虚拟化_KVM 虚拟化环境搭建 - WebVirtMgr

前文《KVM 虚拟化环境搭建 - ProxmoxVE》已经给大家介绍了开箱即用的 PVE 系统,PVE 是方便,但还是有几点问题:第一:始终是商用软件,虽然可以免费用,但未来版本还免费么?商用的法律风险呢&#x…

Git 分布式版本控制工具02:Git代码托管服务列表与使用

1常用的Git代码托管服务 Git中存在两种类型的仓库,即本地仓库和远程仓库。 Git远程仓库中比较常用的有GitHub、码云、GitLab等。 名称网址说明gitHubGitHub: Where the world builds software GitHub一个面向开源及私有软件项目的托管平台,因为只支持…

基于Springboot外卖系统19:用户地址+默认收货地址

1. 用户地址簿功能 1.1 需求分析 地址簿,指的是移动端消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。 同一个用户可以有多个地址信息,但是只能有一个默认地址。 对于地址簿管理,我们需要实现以下几个功能&#…

基于Springboot外卖系统20:前端菜品展示+菜品数量查询

1 菜品展示 1.1 需求分析 用户登录成功后跳转到系统首页,在首页需要根据分类来展示菜品和套餐。如果菜品设置了口味信息,需要展示 按钮,否则显示按钮。 1.2 前端页面分析 在开发代码之前,需要梳理一下前端页面和服务端的交互过…

flash动画设计期末作业_「2019年下学期」第二十五二十六节:期末作品三-吉祥物设计...

初心伟大的艺术品不必追随潮流,他本身就能引领潮流。课前准备软件安装【2019(上)】《三维建模与动画设计》【2019年下学期】第一节:选修介绍及选修人数确定【2019年下学期】第二节:2D&3D设计之百事可乐图标设计【2019年下学期】第三四节&…

YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors

来源:https://arxiv.org/abs/2207.02696 代码:https://github.com/WongKinYiu/yolov7 0. Abstract YOLOv7 surpasses all known object detectors in both speed and accuracy in the range from 5 FPS to 160 FPS and has the highest accuracy 56.8…

如何把一个网页生成一个快捷方式在桌面?_如何打造一个简洁、高效的桌面?

都2020年了,你的桌面仍是这样的? 或是这样的? 但当然你也见过这样的: 你当然会好奇,没有各种快捷方式、任何文件或文件夹的工作桌面,使用起来岂不效率低下?然则非也。我认为高效的工作得从舒服的…

Android ADB 源码分析(三)

前言 之前分析的两篇文章 Android Adb 源码分析(一) 嵌入式Linux:Android root破解原理(二) 写完之后,都没有写到相关的实现代码,这篇文章写下ADB的通信流程的一些细节 看这篇文章之前,请先阅读 Linux…

A Generative Adversarial Network-based Deep Learning Method for Low-quality Defect ImageReconstructi

A Generative Adversarial Network-based Deep Learning Method for Low-quality Defect ImageReconstruction and Recognition 中文名:基于生成对抗网络的深度低质量缺陷图像的学习方法重建与认可 主体思路概述:将模糊的图像使用Gan进行生成与重建&…

bootstrap3 表单构建器_FastReport.NET报表设计器连接到OracleDB关系数据库

首先,您可以使用ODBC连接器。但是它充满了很多设置。FastReport.NET报表设计器连接到OracleDB关系数据库如您所见,您需要创建数据源及其连接字符串。动作比较多。此方法的替代方法是使用FastReport中的连接器。实际上,有两个连接器可供选择。…