永发信息网

高级语言程序设计55

答案:1  悬赏:40  手机版
解决时间 2021-07-29 21:48

void f(int x,int y,int*z)

{*z=y-x ; }

main()

{int a=10,b=20,c=30;

f(a,b,&c);f(b,c&a);f(c,a,&b);

printf("%d,%d,%d\",a,b,c);

}

答案是

-10,-20,10

我是初学者,希望大家能帮我详细的分析下!

谢谢!!

最佳答案

你好.


首先,你要明白函数的传参方式,分为值传递和地址传递. 在函数f()中形参x y是值传递,等于复制一个副本到函数中,对副本的改变并不影响其原来实参的值.


而对形参z以指针传送地址的形式.也就是说实参(如a,b,c)向形参(z)传递的是实参所指向对象的地址。既然这样,形参在函数中解引用所改动的值,同时也改动了实参所指向对象的值,因为他们本身就是指向一个地址,即同一个对象.



那么.首先调用f(a,b,&c); 则函数中x=a,y=b,z=c; z是指针,传递的是地址,所以z和c指向同一内存空间.


就等于c=y-x=20-10=10. 函数返回到main函数后, c的值为10.



第二次调用f(b,c,&a); 同上.a=c-b=10-20=-10.


第三次调用f(c,a,&b); b=-10-10=-20. 同上.



不知道有没有说明白.. 我自己都觉得有点绕.. 呵呵. 不明白的话请联系我.

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
情侣名 急
我的笔记本电脑需要买什么设备,才能实现无线
大泽乡起义时陈胜建立的政权叫什么?
和麦迪同年的前几位新秀是哪几位?
人人都说没有结果的爱情不如放手,可爱情的结
_____不是人生的目的,贫困不是穷人的_____.
大祥区邵阳添添过年家庭厨房哪位知道具体地址
非凡造句
谁知道火线刀锋有几部啊?
汉口如家快捷酒店~最多可以提前几天预订房间
午夜拍案惊奇都讲过什么
农历1992年 8月初4阴历是多少号
华容区鄂州全民网吧在什么地方啊,我要过去处
本人12月8日充话费.领QQ农场礼包.怎么系统说
描写大海风平浪静的句子
推荐资讯
东安县永州锅蒸馍(新建路)在什么地方啊,我要
有没有人愿意加入?为了朋友?
3G无线上网卡-最新套餐报价
本人18岁腿弯还能矫正么?
年底难找工作么?
洗完头经常用吹风机吹干,对头发到底有多大的
什么是女红
澳门工资多少钱一个月,白领和金领一月收入分
红安县黄冈湖北垄上人力资源红安接待点地址在
北湖区郴州农村信用合作社(安和信用社)哪位知
家中一处放置电视机的线那,只要电视机插在那
免费下载小说的网站有哪些?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?