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,一经查实,立即删除!

相关文章

BJFU 质数相关

1 /*2 BJFU 质数相关3 http://101.200.220.237/contest/19/problem/116/4 二分图5 按质因数奇偶性建立二分图6 *7 *8 */9 #include <cstdio>10 #include <algorithm>11 #include <cstring>12 #include <cmath>13 #include <vector>14 #i…

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

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

嵌入式软件面试(基础题)总结,不断更新

C/C/各种基础啊 1. static有什么用途&#xff1f;&#xff08;请至少说明两种&#xff09; 1.限制变量的作用域 2.设置变量的存储域 2. 引用与指针有什么区别&#xff1f; 1) 引用必须被初始化&#xff0c;指针不必。 2) 引用初始化以后不能被改变&#xff0c;指针可以改…

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

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

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

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

SQL-ALTER-change和modify区别

ALTER 对于列的应用&#xff1a;1.更改列名格式&#xff1a;CHANGE old_col_name new_col_name column_definition保留old和new列名列名&#xff1a;a ---->b 列类型ALTER TABLE t1 CHANGE a b INTEGER;2.更改列类型&#xff0c;不改列名保留old和new的列名&#xff0c;即使…

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

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

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

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

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

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

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

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

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

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

Android Adb 源码分析

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

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

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

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

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

Android系统root破解原理分析

上一篇文章 Android adb 源码分析 理论基础 root破解过程的终极目标是替换掉系统中的su程序。但是要想替换掉系统中su程序本身就是需要root权限的&#xff0c;怎样在root破解过程中获得root权限&#xff0c;成为我们研究的重点了。下面我们先清点一下我们需要破解系统情况&a…

常见字母缩写

1、ODBC&#xff1a;Open Database Connectivity&#xff0c;开放数据库连接&#xff1b; 2、TCP&#xff1a;Transport Control Protocol&#xff0c;传输控制协议&#xff1b; 3、URL&#xff1a;统一资源定位器&#xff1b; 4、HTTP&#xff1a;Hypertext Transfer Protoco…

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

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

python获取返回值_python 调用 shell ,获取返回值和返回信息

网络上有各种方案解决python调用shell的解决方案&#xff0c;但是没有一个完美的&#xff0c;以下是本人整理的一个方案&#xff0c;比较完美地解决了同时解决获取返回值和返回信息。 def run_linux_cmd_quiet(i_cmd, i_nohup0): l_func_name__name__ . sys._getframe().f_cod…

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

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