程序设计基础-张长海-ch09.pptVIP

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章 再论函数 参数 返回指针的函数 返回结构体值的函数 作用域 本章小结 §9.1 参数 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 ); } §9.1.2 指针作参数 一般意义上,函数的形参是指针类型 对应调用时,相应实参也应是指针类型表达式 例子 void f(int * x){ ……… } void main(void){ int * v; …… … f(v)… …… } 但是真正应用指针参数,其作用是相当大的 由于在函数内部,指针参数变量可以指向它的调用处(外层程序)的其它变量 它起到了其它程序设计语言中变量参数的作用。 如下例程序的功能是对随意输入的两个整数,按由大到小的顺序输出。 函数swap的功能是交换两个整数变量的值。 在该程序中,计算一个顶点在直角坐标系中坐标的函数 coordinate 用指针参数px 、py 代替了原来的全局量传递计算结果坐标。使用形式是: 在函数声明中,增加形式参数px 、py ,并把它声明成指针类型,构成指针参数; void coordinate ( float r , float theta ,float *px , float *py ) 在函数调用中,用变量的指针(地址)作实在参数,对应相应形式参数。对应点A有: coordinete( r , theta1 , xa , ya ) ; 在函数声明中,对形式参数px 、py以间接寻址方式赋值,把值直接送入实在参数指针表示的变量中。对应点A是xa 、ya。 *px = r*cos(PI*theta/180) ; *py = r*sin(PI*theta/180) ; 在这种参数中, 函数调用时实在参数把变量xa 、ya的指针分别送入形式参数px 、py中,因此px 、py分别指向xa 、ya ; 函数内部,以间接寻址方式赋值,分别通过*px 、*py把值送入px 、py所指的变量中,也就是xa 、ya中。 当函数返回后,xa 、ya中自然是函数内部给它们赋的值。 函数three_inter 、intersection 、inter之间的参数传递 函数intersection有指针参数hx 、hy 函数inter有指针参数wx 、wy 函数intersection调用inter时 直接使用形式参数hx 、hy对应 函数inter的形式参数wx 、wy 那么wx 、wy指向什么? void three_inter( void ){ intersection( ... , b1_x,b1_y ); ... ... ... } void intersection ( ... , float *hx , float *hy ) { ... ... ... inter( ... , hx , hy ); } float inter ( ... , float *wx , float *wy ) { *wx = (nb-mb)/(ma-na); *wy = ma*wx+mb ; } 该参数传递过程是: 函数three_inter调用函数intersection( ... , b1_x, b1_y ) 把b1_x , b1_y的地址送入函数intersection的形参hx 、hy中 形参hx 、hy本身是指针类型,它们分别指向b1_x 、b1_y ; 函数intersection中的函数调用inter( ... , hx , hy ) 直接使用hx 、hy对应函数inter中的形式参数wx 、wy wx 、wy是指针参数,参数结合时应该得到指针值 实在参数使用函数intersection的形式参数hx 、hy,它们正好是指

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档