
请教各位大神一个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;
}
实参可以传递数据给形参,形参却不能传递数据给实参是什么意思?求各位大虾举几个例子说明下吧 展开
#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;
}
实参可以传递数据给形参,形参却不能传递数据给实参是什么意思?求各位大虾举几个例子说明下吧 展开
3个回答
展开全部
根据代码,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
展开全部
不用太复杂的例子,这么说:
参数传递过程就像复印,实参传递给形参就是把实参复印了一份给形参,这样的话,我们在被调用的函数里面可以可以看到传过来的参数值,但复印件的改变不影响原件。比如说要办理电话卡业务需要本人身份证,但我们留在那留的是一张身份证复印件,通信公司可以从复印件上得到你的身份证号,以及你的头部图像。但通信公司对你的身份证的任何标注,涂写,盖章,都不会反映的你的身份证原件上来。这就是形参不能传递数据给实参。
参数传递过程就像复印,实参传递给形参就是把实参复印了一份给形参,这样的话,我们在被调用的函数里面可以可以看到传过来的参数值,但复印件的改变不影响原件。比如说要办理电话卡业务需要本人身份证,但我们留在那留的是一张身份证复印件,通信公司可以从复印件上得到你的身份证号,以及你的头部图像。但通信公司对你的身份证的任何标注,涂写,盖章,都不会反映的你的身份证原件上来。这就是形参不能传递数据给实参。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |