请教各位大神一个C语言的问题,下面这段程序为什么输出结果是1234567890?什么叫做形参不能传递给实参?

代码如下;#include<stdio.h>#include<stdlib.h>voidfun(inta,intb){intt;t=a;a=b;b=t;}intmain(... 代码如下;
#include <stdio.h>
#include <stdlib.h>
void fun(int a,int b){
int t;
t=a;
a=b;
b=t;

}
int main()
{
int c[10]={1,2,3,4,5,6,7,8,9,0},i;
for(i=0;i<10;i+=2)
fun(c[i],c[i+1]);
for(i=0;i<10;i++)
printf("%d",c[i]);
printf("\n");

return 0;
}
实参可以传递数据给形参,形参却不能传递数据给实参是什么意思?求各位大虾举几个例子说明下吧
展开
 我来答
keyuth
2016-09-18 · TA获得超过825个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:89.7万
展开全部

根据代码,fun()函数设计功能是进行字符互换。

因为fun()函数中,形参变量a,b为直接传值调用。a,b相对函数外实参,其实是另外一组变量,它们有自己的存储空间,在调用函数时,将函数外实参的值分别赋给变量a,b。函数内改变a,b的值,不影响函数外实参。类似如下情况:

int a1=5;
int a2=a1; //变量a2独立于a1,具有自己的存储空间,把a1值复制到a2存储空间
a2 = 6;    //改变a2的值,为改变a2存储的值,对a1存储空间不发生影响。

下面的情况有所不同:

void fun(int &a,int &b){
     int t;
     t=a;
     a=b;
     b=t;
}

形参a,b被定义成引用变量,调用函数fun()时,不是传值调用,而为引用调用。a,b引用调用函数的实参,可以视为函数外实参的"别名",改变a,b的值等同于直接改变函数外实参的值。

还有一种情况,使用指针类型的形参:

void fun(int *a,int *b){
     int t;
     t=*a;
     *a=*b;
     *b=t;
}

指针变量a,b分别保存指向函数外实参的指针,通过指针访问函数外实参存储空间,也可以实现直接改变实参的值。

当前不能联网
2016-09-18 · TA获得超过1563个赞
知道大有可为答主
回答量:2626
采纳率:66%
帮助的人:689万
展开全部
形参是指仅使用的参数,函数过程不修改参数值,用完之后仍原封不动的还给调用过程。
实参是指不仅使用,还参与修改,函数过程对参数的变化会在使用完之后反应到过程中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-09-18
展开全部
不用太复杂的例子,这么说:
参数传递过程就像复印,实参传递给形参就是把实参复印了一份给形参,这样的话,我们在被调用的函数里面可以可以看到传过来的参数值,但复印件的改变不影响原件。比如说要办理电话卡业务需要本人身份证,但我们留在那留的是一张身份证复印件,通信公司可以从复印件上得到你的身份证号,以及你的头部图像。但通信公司对你的身份证的任何标注,涂写,盖章,都不会反映的你的身份证原件上来。这就是形参不能传递数据给实参。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式