指针04 - 零基础入门学习C语言44

第八章:指针04

 

让编程改变世界

Change the world by program


 

小结

归纳起来, 如果有一个实参数组, 想在函数中改变此数组中的元素的值, 实参与形参的对应关系有以下4种情况:   (1) 形参和实参都用数组名, 如: [codesyntax lang="c"]
void main()
{int a[10];f(a, 10);
}void f(int x[], int n)
{}
[/codesyntax]     (2) 实参用数组名, 形参用指针变量。如: [codesyntax lang="c"]
void main()
{int a[10];f (a, 10);
}
f(int *a, int n)
{}
[/codesyntax]     (3) 实参形参都用指针变量。如: [codesyntax lang="c"]
void main()        
{                      int a[10], *p = a;f(a, 10);
} void f(int *x, int n)
{}
[/codesyntax]     (4) 实参为指针变量, 形参为数组名。如: [codesyntax lang="c"]
void main()                        
{int a[10], *p = a;f(p, 10);
}
f(int x[], int n)
{}
[/codesyntax]  

源码分析

对数组中10个整数按由大到小顺序排序

程序源代码(点击下载)  

多维数组与指针

用指针变量可以指向一维数组中的元素, 也可以指向多维数组中的元素。 但在概念上和使用上, 多维数组的指针比一维数组的指针要复杂一些。  

多维数组元素的地址

先回顾一下多维数组的性质,可以认为二维数组是“数组的数组”, 例 : 定义int a[3][4] = {{1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19, 21, 23}}; 则二维数组a是由3个一维数组所组成的。设二维数组的首行的首地址为2000 则有…… [caption id="attachment_154" align="aligncenter" width="300"] 多维数组元素的地址[/caption] [caption id="attachment_155" align="aligncenter" width="300"] 多维数组元素的地址[/caption]  

源码分析

 

输出二维数组有关的值

程序在此!(点击下载)  

指向多维数组元素的指针变量

把二维数组a分解为一维数组a[0],a[1],a[2]之后,设p为指向二维数组的指针变量。 可定义为:int (*p)[4] 它表示p是一个指针变量,它指向包含4个元素的一维数组。若指向第一个一维数组a[0],其值等于a,a[0],或&a[0][0]等。 而p+i则指向一维数组a[i]。 从前面的分析可得出*(p+i)+j是二维数组i行j 列的元素的地址,而*(*(p+i)+j)则是i行j列元素的值。   二维数组指针变量说明的一般形式为: 类型说明符 (*指针变量名)[长度]   其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。“长度”表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。  

实战演练

 

用指针变量输出二维数组元素的值

请看源码!(点击下载)  

课后题

通过输入指定行数和列数打印出二维数组对应任一行任一列元素的值。 详细答案将在下期公布,尽情收看!   [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LNYGLNJYDJXO']视频下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/archive/2011/01/31/3847020.html

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

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

相关文章

填坑 | .NET 5在Docker中访问MSSQL报错

【.NET Core】| 作者 / Edison Zhou不知道你有没有在.NET Core/.NET 5的Docker访问MS SQL Server数据库,如果有,那么很有可能会遇到这个错误。1SSL版本错误最近在公司用.NET 5重构部分业务服务,由于之前老系统使用了MS SQL Server数据库&…

六个机械原理,动图形象直观、解读通俗易懂

全世界只有3.14 % 的人关注了爆炸吧知识01间歇运动机构▼间歇运动机构能够将原动件的连续转动转变为从动件周期性运动和停歇的机构,称为间歇运动机构。例如牛头刨床工作台的横向进给运动,电影放映机的送片运动等都用有间歇运动机构。常见的间歇运动机构有…

linux读写usb host,LINUX下USB1.1设备学习小记(3)_host与device

各位还记得”任何传输都是由host发起的”这句话么~在usb设备插入pc中到拔出usb设备,都是由host进行询问的一个usb鼠标的工作流程可以表达如下:usb鼠标插入pc中:主机询问设备:给我你的设备信息(控制传输)主机根据usb鼠标的设备信息进行驱动配置,配置结束后主机询问设备:给我你的…

java判断时间区间 隔天_Java初中级程序员面试题宝典

Java基础部分&与&&区别?&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直…

什么是sns

SNS 目录[隐藏] 第一章 什么是SNS? 第二章 SNS带给顾客的特殊价值描绘 第三章 观察SNS的技术与服务 第四章 SNS市场与竞争 第五章 SNS的主要营销策略简介 第六章 中国SNS的发展与主要网站及产品SNSSNS,全称Social Networking Services,即社会…

elsa-core——1.Hello World:Console

github上有一个开源的工作流项目elsa,elsa-core是core语言的版本,其文档因为是英文,因此会让很多人不想看,或者是看不下去,从这篇文章开始我将开始对elsa-core的文档翻译成中文并分享出来,方便大家查看与学…

docker 查看容器_Docker介绍

docker介绍什么是docker?我们先看一下官方文档对docker的定义。翻译一下就是:Docker是一个集开发,发布和运行应用程序的开放平台。Docker能够分离应用和基础架构,从而可以使得用户可以快速交付软件。借助于Docker,用户…

ASF经验谈(上)

http://software.intel.com/zh-cn/blogs/2009/12/01/asf/?cidsw:51cto【前言】写这篇文章之前先声明一下,笔者这里说到的ASF不是指Microsoft的多媒体文件的ASF格式(可能这个很多人更熟悉一些),而是用于远程管理的ASF(Alert Stand…

ubuntu linux 批量部署,使用Cobbler批量部署Linux和Windows:CentOS/Ubuntu批量安装(二)...

通过前面服务端的部署,已经配置好了 Cobbler Server 端,接下来开始进行 CentOS/Ubuntu 的批量安装,在进行 CentOS/Ubuntu 批量安装时,也需要通过Cobbler来做相应的发行版导入配置。流程如下:上传ISO镜像到 Cobbler Ser…

盘点这些年被黑的最惨的语言

全世界只有3.14 % 的人关注了爆炸吧知识这些年,被黑过的语言数不胜数,最惨的要数HTML,但CSS、Python等也惨遭黑手比惨?这就来一波。HTMLHTMLC语言C语言JavaJavaJavaJavaJavaScript JavaScript JavaScriptJavaPHPPHPPHPPHPPythonPy…

2011目标 及 总结

20110918 添加 Glodon 任务规划 20110612 修改 经过年中分析,把下半年目标定为: 重心转向技术开发,有闲暇的时间就继续完成年初计划中的其它项。在技术学习方面,注意:不要花太多时间在开发“小系统”上,也不…

python 批量下载网页图片_Python实现多线程批量下载图片

《派森》(Python)3.13 win32 英文安装版 类型:编程工具大小:21M语言:英文 评分:8.7 标签: 立即下载 爬取图片可真的是一个可遇不可求的机会。 有需求就会动力。 目标:爬取某个网站上n多页的链接&#xff0c…

linux中获取redis的map,深入Redis之 bitmap位图和HyperLogLog(五)

bitmap位图我们知道一个字符占1个字节,也就是8个位例如set name bigbig字符串中的3个字符的ASCII码为98 105 113所以big转为二进制就是:01100010|01101001|01100111b i g占了3个字节的大小,一共24个位。bitmap位图可以帮我们获取…

想象中的同居生活 VS 真实的同居生活

1 长颈鹿是怎么喝水的2 为了防止雨伞被偷设计师还是真动了不少脑筋呢-3 睡在这样的床上,晒着太阳,肯定超赞4 如何阻止猫咪上楼5 想象中的同居生活 VS 真实的同居生活 6 硬生生把苹果削成吃不饱也吃不起的样子7 来来来准备瓜子杏仁你点的每个赞&#xff…

抽丝剥茧!Source Generators原理讲解

前言前段时间,我们已经用Source Generators实现了好多功能,比如AutoMapper、API最佳实践。你看完那些实现代码,是不是还有点云里雾里!Source Generators到底是怎么做到的?基础知识Source Generators是编译过程的一部分…

GPON技术概述

GPON技术转载自《电子发烧友》。文章链接请见:http://www.elecfans.com/article/88/171/2009/2009050556028.htmlGPON技术详述介绍GPON 技术之前,先介绍目前也被应用的另一种PON 技术“EPON”。1.EPON技术介绍EPON 又名 GEPON,是由…

linux中断处理汇编入口,Linux中断处理体系结构分析(一)

中断也是一种异常,之所以把它单独的列出来,是因为中断的处理与具体的开发板密切相关,除一些必须、共用的中断(比如系统时钟中断、片内外设UART中断)外,必须由驱动开发者提供处理函数。内核提炼出中断处理的共性,搭建一…

没有违反GPL,他们真的给了源码

文 | Travis出品 | OSC开源社区(ID:oschina2013)【前情回顾】国内智能设备制造商 UMIDIGI 因违反 GPLv2 协议引发争议,并告知开发者“想要源码上门自取”。而后,知名科技博主 Naomi Wu(机械妖姬&#xff09…

有朋友问我为什么这么帅

1 2 重庆的朋友告诉我这是微辣3 我就说我只是虚胖,这下你相信了吧?4 这明明就是打情骂俏好嘛5 这还是那个平常瓶盖都拧不开的女孩子吗6 被一个机器人撩到了!7 这是什么原理?你点的每个赞,我都认真当成了喜欢

python安装详细步骤mac_Mac安装python3的方法步骤

Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。 现在 Mac 上默认安装的 python 版本为 2.7 版本,若 安装 新版本需要 通过 该地址进行下载: https://www.python.org/ftp/python/3.5.0/python-3.5.0…