- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
删其它参数类别再论函数
相关资料下载地址 1/incoming/Personal 《C程序设计》电子教案 请保留到期末 → 教学信息→ 程序设计 第八章 再论函数 参数 返回指针的函数 作用域 递归 本章小结 作业 C参数传递规则 int u,v ; void p( int x , int y) { y = x+y; printf(“%d %d\n” , x,y ) ; } void main(void) { u = 3; v = 4; p( u , v ); printf(“%d %d\n” , u , v ); p( 6 , u+v ); printf(“%d %d %d\n” , u, v ,u+v ); } 指针作参数 一般意义上,函数的形参是指针类型 对应调用时,相应实参也应是指针类型表达式 例子 void f(int * x){ ……… } void main(void){ int * v; …… … f(v)… …… } 但是真正应用指针参数,其作用是相当大的 由于在函数内部,指针参数变量可以指向它的调用处(外层程序)的其它变量 它起到了其它程序设计语言中变量参数的作用。 如下例程序的功能是对随意输入的两个整数,按由大到小的顺序输出。 函数swap的功能是交换两个整数变量的值。 请认真体会并思考在如下几种情况下,实参表达式应是怎样形式。 单独变量作实参,包括: 非指针类型变量作一般非指针类型形参的实参 一般非指针类型变量作指针类型形参的实参 指针变量作指针类型形参的实参 指针变量作一般非指针类型形参的实参 单独形参变量作实参,包括: 一般非指针类型形参变量做一般非指针类型形参的实参 一般非指针类型形参变量做指针类型形参的实参 指针类型形参变量做一般非指针类型形参的实参 指针类型形参变量做指针类型形参的实参 数组作参数 数组名实际是一个指针 所以数组名作实参传送给形参的信息实质上是一个指针值 当然相应形参应是指针类型 使用数组作函数参数的形式一般是: 形式参数用数组声明符说明,如下例子说明形参x是10个元素的数组。 int f ( float x [10] ) 实在参数用数组名对应形式参数数组,例如若有声明 float a[10] ; 则用如下形式调用函数 f(a) 函数调用f(a)把数组a的首地址送入函数f的形参x中,在函数执行期间,形参x指向实参数组a ,用a参与进一步运算。也就是说,形参和实参使用一个数组。 数组与指针有极其密切的关系 数组作参数,传递给形参的实际是实参数组的首地址 也就是把实参数组名的值送入形参中 在函数内,形参数组实际是使用实参数组名字开始的那片存储区 事实上C是把数组参数当作指针来处理的。 数组作参数,形参是一指针类型变量 实参数组名实际也是一个指针值 参数结合时,把实参指针值送入形参 实际是把数组首地址送入指针变量中,然后形参指向实参数组第一个元素 上述例子中,经过函数调用、参数结合后,形式参数x指向a[0]。 C参数都是值方式的 数组参数传递给函数的值不是整个数组的值,而是数组名的值,也就是实参数组首地址 在函数内不给形参开辟数组存储空间,只给它开辟一个指针空间 参数传递的是实参数组名字的指针值。 数组参数可以有各种变形 省略数组形式参数最外层的尺寸 最外层的尺寸对计算数组元素的地址不起作用,在对数组参数的形参声明时,可以省略最外层尺寸。前述f的函数定义说明符可以使用形式 int f ( float x[ ] ) 形参声明与前边所述形式等价,形参的具体尺寸由函数调用时的实参数组决定。多维情况也是这样。例如 int q ( float y[ ][20] ) 声明两维数组参数y ,y每行20个元素,具体多少行,由实参数组决定。设有声明 float u[10][20] , v[15][20] ; 则函数调用q(u) ,进入函数q执行时 形参y表记实参数组u ,它是10行20列的数组; 而函数调用q(v) ,进入同一个函数q执行时,形参y表记实参数组v 是15行20列的数
文档评论(0)