- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计-函数解析
值传递方式 方式:函数调用时,为形参分配单元,并将实参的值传给形参;调用结束,形参单元被释放,实参单元仍保留并维持原值。(单向传递) 参数传递方式:值传递、地址传递 形参 实参 数值 表达式 变量 变量 x 例:以下程序运行后,输出结果是 #include stdio.h fun(int x,int y,int z) {x=x+y+z; y=y/2; z=x+y; if(x%2) return x; if(y!=0) return y; return z; } main() { int x=10,y=21,z=30,d; d=fun (5,y%2,z); printf(%d\n,d); printf(%d %d %d ,x,y,z); } main func x y z 10 21 30 d y z 5 1 30 5 1 36 0 36 fun函数值 36 若子函数省略了类型定义,默认为整型 地址传递 方式:函数调用时,将数据的存储地址作为参数传递给形参,形参与实参占用同样的存储单元,实现“双向”传递。 形参 实参 一维数组名 二维数组名 参数传递方式:值传递、地址传递 一维数组 二维数组 一维数组 #include stdio.h void main() {int a[10]={23,-1,12,-3,-7,-8,46,6,78,34},i,num; int count(int a[10] ); num=count( a ); for(i=0;i10;i++) if(a[i]!=0) printf(%d\t,a[i]); printf(\nnum=%d,num); } int count(int b[10] ) {int i,n=0; for(i=0;i10;i++) if(b[i]0) n+=1; else b[i]=0; return n;} a b 一维数组名作函数参数,实现地址传递 函数说明 实参为数组名 函数定义 形参为一维数组 0 0 0 0 函数调用 结论:地址传递时,形参值的变化影响实参值的变化。 P177 例: 读下列程序,当输入1479时,写出其运行结果。 #include stdio.h void str(int n, char s[ ]) { int i= 0; do { s[i++]=n%10+0; n/=10; } while (n); s[i]=\0; } void main ( ) { int m; char a[50]; scanf (%d, m); str (m, a); printf(%s,a); } 形参一维数组的长度可以省略 友情提醒: n%10+0 将一个整数数值转换为一个数字字符 #include stdio.h #include string.h int fun (char str[79]) /* int func (char str[ ] ) */ { int i,j; i=0; j=strlen(str)-1; while(i=j) if(str[i++]!=str[j--]) return 0; return 1; } void main ( ) { char str[79]; int flag; gets(str); flag=fun(str); if( flag ) printf(%s is Huiwen string,str); else printf(%s is not Huiwen string,str); } 【函数编程】函数的功能是判断一个字符串是不是“回文串”。若是返回1,否则返回0 。 fun(str) void main() {int a[2][4]={13,2,4,5,76,83,34,8},i,j; void fun(int b[2][4] ); fun(a) ; for(i=0;i2;i++) { for(j=0;j4;j++) printf(%4d,a[i][j]); printf(\n);} } void fun(int b[2][4]) {int i,j; for(i=0;i2;i++) for(j=0;j4;j++) if(b[i][j]%2) b[i][j]=0; } a 二维数组名作函数参数,实现地址传递 P182 函数说明
文档评论(0)