- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 §9.1指针概述9.1.1 指针的概念 9.2 指针运算符与指针表达式 9.2.1 指针运算符与指针表达式 在C中有两个关于指针的运算符: 运算符: 取地址运算符,m即是变量m的地址。 *运算符:指针运算符, *ptr表示其所指向的变量。 【例9-2】从键盘输入两个整数,按由大到小的顺序输出。 #includestdio.h void main() { int *p1,*p2,a,b,t; /* 定义指针变量与整型变量*/ scanf(%d,%d ,a ,b ); p1=a ; /*使指针变量指向整型变量*/ p2=b ; if(*p1*p2 ) { t =*p1 ; /*交换指针变量指向的整型变量*/ *p1=*p2 ; *p2=t ; } printf(%d,%d\n ,a ,b ); } 在程序运行过程中,指针与所指的变量之间的关系如图 若ptr指向了一维数组: (1)ptr+n与a+n表示数组元素a[n]的地址,即a[n]。对整个a数组来说,共有10个元素,n的取值为0~9,则数组元素的地址就可以表示为ptr+0~ptr+9或a+0~a+9,与a[0]~a[9]保持一致。 (2)知道了数组元素的地址表示方法,*(ptr+n)和*(a+n)就表示为数组的各元素即等效于a[n]。 (3)指向数组的指针变量也可用数组的下标形式表示为ptr[n],其效果相当于*(ptr+n)。 【例9-5】用下标表示法输入输出数组各元素。 源程序 【例9-6】采用指针变量表示的地址法输入输出数组各元素。 源程序 【例9-7】采用数组名表示的地址法输入输出数组各元素。 源程序 【例9-8】用指针表示的下标法输入输出数组各元素。 源程序 【例9-9】利用指针法输入输出数组各元素。 源程序 【例9-10】用地址法输入输出二维数组各元素。 源程序 【例9-11】用指针法输入输出二维数组各元素。 源程序 为什么要引入指针数组这一数据结构呢?因为当我们处理多个字符串时,我们很自然的想到要用二维数组存放这些字符串。由于每个字符串的长度不同,因而该数组的列下标应为最长的字符串的长度。这很显然会造成空间的浪费,用指针数组就可很好地解决:每个字符串用与其长度相同大小的空间存放(可不连续),而把它们的地址放在一起构成指针数组,这之后我们就可通过该指针数组对相应字符串进行处理。 【例9-19】将若干字符串按字母顺序(由小到大) 排序输出。 源程序 9.4.1 指向函数的指针变量的定义及使用 一个函数在编译时被分配给一个入口地址。这个入口地址便是该函数存放空间的首地址。我们可以定义一个指针变量使它保存这一地址,此时该指针变量就指向该函数。而后通过这个指针变量访问之。 (1)定义指向函数的指针变量的一般格式为: 类型标识符 (?指针变量名) ( ) ; “类型标识符”是它所指向的函数的返回值类型。 (2)通过指针变量使用函数 将函数名赋予按(1)中格式定义的指针变量后,指针变量就指向此函数,而后可以通过如下格式来使用此函数: (?指针变量名) (实参表) ; 【例9-20】求a,b中的较大者。 源程序 运行结果: 3 ,5 ↙ a=3,b=5,max=5 9.4.2 用指针类型数据作函数参数 数组名是一种地址,即指针,因而它是属于指针类型的数据。属于指针类型的数据还有很多,如,函数名和用指针定义符“?”定义的各种指针变量。它们用作函数参数时,同样也是传地址操作。 【例9-21】输入两个整数,按先大后小顺序输出。 源程序 【例9-22】有一名为process()的函数,主函数每次调用它都可以实现不同的功能。第一次调用它时,能求出输入的两参数中的较大者,第二次调用求较小者,第三次调用求和。 源程序 9.4.3 带参的主函数 前边我们用到的主函数都是无参的,实际上它也可以有参数,形式如下: main(argc,argv) argc和argv就是主函数的形参。其中argc是一个整型数据,argv是一个指针数组。 由于主函数是程序的最顶层,所以它的形参值不可能由程序获得,主函数是由操作系统调用的,因而它的参数值由命令行给出。 一个命令行由命令名和传给主函数的参数两部分构成。主函数中的形参argc代表命令行中参数个数(注意,命令名也是一个参数),命令行中字符串数组的地址构成了一个指针数组argv。例如: c:\file1 China Beijing 则argc=3. argv的值如图9-14所示。 【例9-23】设函数main() 所在的文件为file1.exe
您可能关注的文档
- C语言程序设计实例教程潘志安朱运乔余小燕第4章节标准输入输出.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第5章节分支结构.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第7章节数组.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第8章节函数.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第9章节编译预处理.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第10章节指针.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第11章节结构体共用体及枚举类型.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第12章节文件I/O.ppt
- C语言程序设计实用教程周虹课件第1章节程序设计及C语言概述.ppt
- C语言程序设计实用教程周虹课件第2章节C语言的基本数据及其运算.ppt
文档评论(0)