- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数间数值的传递
函数间数值的传递
第一部分:函数间数值的传递
---简单数值间的传递:实参--形参进行单方向的传递,该传递的过程属于一个复制的过程,形参的改变不会改变对应实参元素的值:
例如:
#include stdio.h
void fun(int a,int b,int c)
{ printf(2a=%d,b=%d,c=%d\n,a,b,c);
a+=10;b+=20;c=a+b;
printf(3a=%d,b=%d,c=%d\n,a,b,c);
}
void main()
{ int x=10,y=20,z=30;
printf(1x=%d,y=%d,z=%d\n,x,y,z);
fun(x,y,z);
printf(4x=%d,y=%d,z=%d\n,x,y,z);
}
第二部分:函数间地址的传递
1.函数间地址的传递,可以通过形参的改变来改变对应实参元素的值,该传递过程属于共享的过程。
#include stdio.h
void fun(int *a,int *b,int *c)
{ printf(2a=%d,b=%d,c=%d\n,*a,*b,*c);
*a+=10;*b+=20;*c=*a+*b;
printf(3a=%d,b=%d,c=%d\n,*a,*b,*c);
}
void main()
{ int x=10,y=20,z=30;
printf(1x=%d,y=%d,z=%d\n,x,y,z);
fun(x,y,z);
printf(4x=%d,y=%d,z=%d\n,x,y,z);
}
2.当形参为指针对应的实参为地址或指针
---地址为实参:
#include stdio.h
int fun(int *a,int *b)
{ int s;
s=*a+*b;
return s;
}
void main()
{int x,y,s;
scanf(%d%d,x,y);
s=fun(x,y);
printf(s=%d\n,s);
}
---指针为实参:
#include stdio.h
int fun(int *a,int *b)
{ int s;
s=*a+*b;
return s;
}
void main()
{int x,y,s,*px,*py;
px=x;py=y;
scanf(%d%d,px,py);
s=fun(px,py);
printf(s=%d\n,s);
}
第三部分:一维数组和函数
1.一维数组中元素值作为实参: 数组中的每个元素的实质都代表了一个存储空间(变量),因此数组中元素的传递实质就是数值的传递。和变量间数值的传递相同。
例如:
#include stdio.h
void fun(int x,int y,int z,int *s)
{ *s=x+y+z; }
void main()
{ int a[3]={11,22,33},s;
fun(a[0],a[1],a[2],s);
printf(s=%d\n,s);
}
----
#include stdio.h
int fun(int x,int y,int z)
{ int s;
s=x+y+z;
return s;
}
void main()
{ int a[3]={11,22,33},s;
s=fun(a[0],a[1],a[2]);
printf(s=%d\n,s);
}
2.一维数组名作为实参:对应的形参为(1)*a (2)a[] (3)a[M]
例如1:
#include stdio.h
int fun(int *p)
{ int i,s=0;
for(i=0;i3;i++) s+=*(p+i);
return s;
}
void main()
{ int a[3]={11,22,33},s;
s=fun(a);
printf(s=%d\n,s);
}
例如:
#include stdio.h
#define M 8
void fun(char *b,int n)
{ int i;
for(i=0;in;i++) b[i]=*;
}
void main()
{char s[M]={A,B,C,D,E,F,G,H};
int i;
for(i=0;iM;i++) printf(%3c,s[i]);
printf(\n);
fun(s,4);
for(i=0;iM;i++) printf(%3c,s[i]);
printf(\n);
}
3.数组中元素的地址作为实参:
#include stdio.h
#define M 8
vo
您可能关注的文档
最近下载
- 悬挑支模架专项施工方案(范例).docx VIP
- QY130K7C汽车起重机技术规格书-tdm-D2-20240708_20240713085532.pdf
- 2024年河南省驻马店市小升初数学高频考点检测卷含解析.doc VIP
- Module4 Planes,ships and trains.期末模块复习课件-外研版八年级上册.pptx VIP
- 电伴热带说明书.docx
- JGT491-2016 建筑用网格式金属电缆桥架.docx
- 蓝色点线背景的大数据云计算PPT模板.pptx VIP
- 第28课 初识人工智能 教案 义务教育人教版信息科技三年级全一册.pdf
- 江苏省各地市2023年中考物理试题【10套】(附真题答案).docx VIP
- 溴酸镉安全技术说明书 CAS No 14518-94-6.pdf VIP
文档评论(0)