c语言函数实参是赋值语句,c语言说形参不能改变实参的值,为什么这个赋值语句可以...

c语言说形参不能改变实参的值,为什么这个赋值语句可以0

cpystr(q1;

printf("

cpystr(char *p1,*q2,char *p2)

{while(*p2++=*p1++);,b),q2);

}

main()

{char *q1=&quot.h>,b[20],q1;

q2=b;%s %s"china"stdio#include&lt 是printf(“%s %s",q1,q2) hllmy // 提问区域可用时间 alog && alog('speed.set', 'c_ask', +new Date); alog.fire && alog.fire("mark"); F.context('answers')['2347766573'] = {uid:"121713269",imId:"75327461747461636b6f724107",passPhoto:"1",id:"2347766573",userName:"tattackor",userNameEnc:"tattackor",user:{sex:"1",iconType:"8",gradeIndex:"12",grAnswerNum:"1193",carefield: [{cid:"1073",cname:"编程语言"},{cid:"202",cname:"理工学科"},{cid:"93",cname:"其他编程语言"},{cid:"74",cname:"电脑/网络"},{cid:"83",cname:"教育/科学"}],isFromTeam:"1",teamName:"百度与你同在",teamId:"25555",isAuth:"0",authTitle:"",isUserAdmin:"1",userAdminLevel:"20",userAdminTitle:"中级芝麻将",userAdminType:"2",isFamous:"0",isMaster:"0",goodRate:"70"},isAnonymous:"0",isCurrentUser:"0",mapUrl:"",refer:"",replyAskNum:"",threadId:"9391066293",hasComment:"0",qid:"512234834",raid:"",recommendCanceled:"0"}; F.context('answers')['2347766573'].encodeUid = '75324069236f25705e794107'; 推荐于2016-10-23 13:41:07 最佳答案 形参和实参的区别

形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。

实参出现在主调函数中,进入被调函数后,实参变量也不能使用。

形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。

2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。

4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。 本回答由电脑网络分类达人 赵康勇推荐 评论

tattackor

采纳率:70% 来自团队:百度与你同在 擅长: 编程语言 理工学科 其他编程语言 电脑/网络 教育/科学 // 高质or满意or特型or推荐答案打点时间 alog && alog('speed.set', 'c_best', +new Date); alog.fire && alog.fire("mark"); // 首屏时间打点 void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document); 其他回答 F.context('answers')['1293557927'] = {uid:"366858982",imId:"e6d2323030385f7368656e616fdd15",isBest:"1",passPhoto:"1",id:"1293557927",userName:"2008_shenao",userNameEnc:"2008_shenao",user:{sex:"1",iconType:"6",gradeIndex:"6",grAnswerNum:"96",carefield: [{cid:"866",cname:"C/C++"},{cid:"869",cname:"C#/.NET"},{cid:"870",cname:"JAVA相关"},{cid:"1249",cname:"python"},{cid:"1246",cname:"PHP"}],isFromTeam:"1",teamName:"",teamId:"48165",isAuth:"0",authTitle:"",isUserAdmin:"0",userAdminLevel:"",userAdminTitle:"",userAdminType:"",isFamous:"0",isMaster:"0",goodRate:"57",applyExcType:"0"},isAnonymous:"0",isCurrentUser:"0",mapUrl:"",refer:"",replyAskNum:"",threadId:"5174231709",hasComment:"0",qid:"512234834",raid:"",recommendCanceled:"0"}; F.context('answers')['1293557927']['c_timestamp'] = '1356919354'; F.context('answers')['1293557927'].encodeUid = 'e6d24069236f25705e79dd15'; 所以最终b[]就有了新值china,指向的是地址;

t=p1;

你看看这个,char p2)

{

char t;

void cpystr(char p1;/,p1=e,q2),获取可以帮你理解这个问题你这个参数用的都是地址(指针)在传值,b='

q2=b;//,当然可以,b);交换之后;;c'但是事实是他们没有交换值

}

void main()

{

char q1=',q2;%c %c"

p1=p2,p2=c:

#include &quot。首先p2指的是b[]的首地址.h"

printf(",然后传入的两个参数都是指针;

cpystr(q1,q1=e;stdio;

p2=t,q2=b=e,q1,最后将p1指向的地址里的值依次赋给p2指向的地址里的值;e'按理说此时b=c;此时,q1=c;/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值