- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]C语言第8章
* * * * 8.5.1指针作为函数参数 * 例8-16 用指针实现用swap()函数交换两个变量的值 main ( ) { int a, b; printf(please input a and b:); scanf(%d%d,a,b); printf(Before Swap: a=%d, b=%d\n,a,b); swap(a,b); printf(After Swap: a=%d, b=%d\n,a,b); } void swap(int *p1,int *p2) { int *t; t=p1; p1=p2; p2=t; } 运行结果: please input a and b:3 5 Before Swap: a=3, b=5 After Swap: a=3, b=5 8.5.1指针作为函数参数 虽然C语言的函数参数都是值传递,但是可以通过地址值间接地把被调函数的某些数值传送给主调函数。指针参数传递中应注意: (1)C语言中从实参到形参的传递是值传递:无论什么参数都是传值方式。 (2)能够修改实参变量值的原因:形参和实参共用同一存储单元。 (3)要从函数获得多个值的可用多个指针变量作为函数参数,通过修改指针所指变量的值来返回多个值。 * 8.5.2指针作为函数的返回值 可以将地址作为函数返回值,当将地址作为函数返回值时,该函数被称为指针函数。其定义形式为: 数据类型? *?函数名(形参表) ?{ 函数体; } 其中,函数名前面的“*”表示该函数返回类型为指针,数据类型表明指针指向的类型,函数的返回值是一个指向该数据类型的指针。注意,此时说明的是函数,而不是指针。 * 例8-17 使用指针函数求两个变量的最大值。 #include stdio.h int * max (int *x,int *y) /* 函数max的返回值为指向整型的指针 */ { int *p; p = *x*y ?x:y; /* p为指向最大值的指针 */ return ( p ); /* 返回指针p */ } main ( ) { int a, b, * pmax; /* 指针pmax指向最大值变量 */ printf (please input a and b:); scanf (%d%d,a, b); pmax = max(a, b); /* 调用max时实参为变量a和b的地址 */ printf (max=%d\n, *pmax);} 8.5.3函数的指针 在定义一个函数之后,编译系统为每个函数确定一个入口地址,当调用该函数的时候,系统会从这个“入口地址”开始执行该函数。存放函数的入口地址的指针就是一个指向函数的指针,简称函数的指针。函数的指针的定义方式是: 类型标识符 (* 指针变量名)() 特别值得注意的是,由于C语言中,( )的优先级比*高,因此,“* 指针变量名”外部必须用括号,否则指针变量名首先与后面的()结合,就是前面介绍的“返回指针的函数”。 * 例8-18 用函数的指针,实现从两个数中输出较大者。 #include stdio.h main( ) { int max ( int ,int ); /* 函数说明 */ int (*pf)( ); /* 函数指针定义 */ int a,b,c; pf = max; /* 将函数的入口地址赋给指针 */ printf (please input a and b:); scanf(%d%d, a, b); c = (*pf)(a,b); /* 用指针调用函数,c为a和b中较大者*/ printf(a=%d,b=%d,max=%d\n, a, b, c); } int max ( int x, int y ) { return ( xy ) ? x : y;} 8.5.3函数的指针 需要注意的是,一个函数指针可以先后指向不同的函数,将哪个函数的地址赋给它,它就指向哪个函数,使用该指针,就可以调用哪个函数,但是,必须用函数的地址为函数指针赋值。另外,如果有函数指针(*pf)( ),则pf+n、pf++、pf--等运算是无意义的。 * 8.6指针数组和指向指针的指针 8.6.1指针数组 8.6.2指向指针的指针 * 8.6.1指针数组 数组中每个元素都具有相同的数据类型,数组元素的类型就是数组的基类型。如果一个数组中的每个元素均为指针类型,即由指针变量构成的数组,这种数组称之为指针数组,它是指针的集合。指针数组说明的形式为: 类型 * 数组名[常量表达式] * 1.指针数组的定义 例8-19 分析下面的程序的运行
您可能关注的文档
最近下载
- 外教社新世纪英专本科生系列(修订版):英语阅读 第1册 PPT课件Unit 6.pptx VIP
- 标准图集-宁04JT-02 住宅厨房、卫生间排风道图集(二) (YQD型).pdf VIP
- 数据采集与处理 配套课件.pptx
- 内科学 心律失常 心律失常.doc VIP
- 光伏工程档案资料表、质量现场检查表、验收资料清单、验收、试运和移交生产、竣工验收鉴定书.pdf VIP
- MTI中的翻译理论教学 廖七一教授发言稿.ppt VIP
- 外教社新世纪英专本科生系列(修订版):英语阅读 第1册 PPT课件Unit 5.pptx VIP
- 河南省通用安装工程预算定额章节说明.doc
- 内科学 心律失常 心律失常.docx VIP
- 行政办事员五级(初级工)考试复习题及答案.doc VIP
文档评论(0)