中易网

实参值改不改变?

答案:6  悬赏:80  
解决时间 2021-04-22 16:35

假如有个题是考察实参值改不改变的,怎么比较快的判断它改不改变呢?

例如

以下程序的输出结果是【11】。
#include <stdio.h>
void swap(int *a,int *b)
{
int *t;
t=a;a=b;b=t;
}
main()
{
int i=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d %d\n",*p,*q);

答案是3 5

最佳答案
调用函数的话,如果是传递地址给函数参数的话,那就相当于在实参上进行操作,这样实参就是有改变的,呵呵。。
如果单纯传递值的话,那样只改变形参,不改变实参。。
不懂再问哈。。
全部回答
不会改变,因为swap里面交换的是形参的指向,实参的指向没有改变,内存里面的值也没有改变 如果写成: swap(int *a,int *b) { int tmp; tmp=*a; *a=*b; *b=tmp; } 实参所指向的内存里存的值会改变,因为这时的函数里 交换的是 形参所指向的内存 里面存的值 ,但实参和形参 的指向都没有改变

怎么全都答了那么复杂。楼主请看: t=p;p=q;q=t;

只表示存放地址的变量中存放的地址交换了,与i和j有什么关系呢?

若是:*t=*p;*p=*q;*q=*t; 这就表示地址内容改变了

的确不会变。。理由同一楼。。。

楼上的回答都错了,怎么可能变!

会改变!如果用指针和数组就可以改变其值,因为传递的是地址,是双向的!用常量的话就是单向值传递,不会改变!

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
吃避孕药倒直爱水少怎么办
重庆劳务市场,现在在什么位置?
苏玛数码影像地址有知道的么?有点事想过去
下山时,我的膝盖骨外侧有根筋痛,怎么回事?
孕妇吃什么燕窝好?
幸福锁店地址在哪,我要去那里办事
怎么才能让QQ升级更快?
三星手机A7如何解徐锁屏密码
踏板摩托80机子 一般耗油是百公里是多少 ??
路由器这几天经常连接不上,什么原因,怎么弄
欧杰水暖配件地址在什么地方,我要处理点事
吉娃娃,是不是
水浒q传中的召唤兽绑了还可不可以用宝宝卡
QQ吧怎么发表
驼梁一天能游完吗 现在门票是多少
推荐资讯
联想电脑买外包装如何区别集显独显
防冻液出现结晶体是什么原因
psp极品飞车。变速能不能用5.00m336玩?我的
圆通速递(建设西路中国邮政储蓄银行西30米圆
谁能告诉我二笔输入法的字根
怎样找回安全邮箱的密码
旋风乒乓少儿培训中心地址在哪,我要去那里办
CF不会用刀怎么办?
你怎么了的英语有几种说法
哪些航空实行付费选座
眼皮老是跳就会有坏事要发生吗?
戴隐形眼镜真的对角膜伤害很大吗?怎样可以让
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?