24小时热门版块排行榜    

查看: 2461  |  回复: 13

小乔205909

铜虫 (初入文坛)

[求助] c语言求助,一个小程序详细讲解

#include
typedef struct{int b,p;}A;
  void f(A c)
{
   int j;
   c.b+=1;
   c.p+=2;
  }
main()
{
   int i;
   A a={1,2};
   f(a) ;
   printf("%d,%d\n",a.b,a.p);
   getch();
}
请高手讲解,此段在wintc中执行结果为:1,2   
为什么不是2,3啊??

[ Last edited by 小乔205909 on 2012-2-16 at 23:13 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

xar

铁杆木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
xzhdty(金币+1): 欢迎常来程序语言看看 2012-02-17 21:28:36
小乔205909: 回帖置顶 2012-07-26 06:25:20
C语言中的参数传递是值传递,是单向的,用指针可解决。
#include
typedef struct{int b,p;}A;
  void f(A *c)
{
   int j;
   (*c).b+=1;
   (*c).p+=2;
  }
main()
{
   int i;
   A a={1,2};
   f(&a) ;
   printf("%d,%d\n",a.b,a.p);
   getch();
3楼2012-02-17 08:00:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lxlstudy123

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
小乔205909: 回帖置顶 2012-02-20 09:08:50
余泽成(金币+2): 谢谢参与应助! 2012-02-21 00:27:15
C语言中值参数是单向的传递,即实参将值传递给形参,但形参的任何变化都与实参无关。在本题中,函数f中的参数是值参数,形参c接受到了实参a的值,在函数f中,经过运算,c.b和c.p的值分别变为2,4,但与实参a没有半毛钱的关系,这就是为什么本题答案仍然是1,2的原因。
当然,若将函数参数改为指针就另当别论了,因为函数参数是指针的话,实参是将内存地址传递给形参,形参的任何变化自然也就是实参的变化。2楼所做得修改就可验证这一点。

» 本帖已获得的红花(最新10朵)

4楼2012-02-17 11:40:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚

【答案】应助回帖

xzhdty(金币+2, 专家考核): 欢迎常来程序语言看看 2012-02-17 21:27:42
CODE:
void f(A *c)
{
    int j;
    (*c).b+=1;
    (*c).p+=2;
   }

正常的写法应该是:
CODE:
void f(A *c)
{
        c->b +=1;
        c->p +=2;
}

» 本帖已获得的红花(最新10朵)

6楼2012-02-17 18:32:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
jjdg(金币+1): 感谢应助 2012-02-20 01:41:29
在调用函数的时候,传入的参数都会拷贝的。
      举个简单例子说,你有一部手机A,别人也有一部相同手机B,你修改B的设置,并没有影响A的该设置,传入的参数就好比A,但是编译器会用B,把B的属性修改成和A的一样,在函数体内修改的是B的属性,并不会改变A的属性
      还有一种,你把网上账号告诉别人,别人账号消费,你的账号就会改变,这也是一种,也就相当于指针!!
8楼2012-02-18 18:32:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

yalefield

金虫 (文坛精英)

老汉一枚

【答案】应助回帖

感谢参与,应助指数 +1
jjdg(金币+1): 感谢应助 2012-02-18 12:34:46
简单滴说,函数f里面的那个c,并不是函数main里面的那个a。
那个c是个马甲。
2楼2012-02-17 01:59:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lxlstudy123

金虫 (小有名气)

抱歉,应是3楼所做的修改
5楼2012-02-17 11:41:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

firstmate

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
jjdg(金币+1): 感谢应助 2012-02-18 12:35:01
a和c都是局部变量!
7楼2012-02-18 10:33:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

psxlcs

金虫 (正式写手)

jjdg(金币+1): 感谢应助 2012-02-20 01:41:23
因为函数执行参数是单向传递啊
9楼2012-02-19 13:35:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xuehanfeng

木虫 (小有名气)

jjdg(金币+1): 感谢应助 2012-02-20 01:41:17
楼上都是正解,虽然能通过传地址来解决这个问题,但是一般要避免写这种代码,负作用比较大
10楼2012-02-19 22:27:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 小乔205909 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 308求调剂 +4 是Lupa啊 2026-03-09 4/200 2026-03-16 01:21 by Xttdmn
[考研] 0703化学调剂,求各位老师收留 +7 秋有木北 2026-03-14 7/350 2026-03-15 17:30 by 小物理化学
[考研] 材料与化工 323 英一+数二+物化,一志愿:哈工大 本人本科双一流 +4 自由的_飞翔 2026-03-13 5/250 2026-03-14 19:39 by hmn_wj
[考研] 290求调剂 +4 @将就将就看 2026-03-10 8/400 2026-03-14 14:23 by 千千运气
[考研] 材料080500调剂求收留 +3 一颗meteor 2026-03-13 3/150 2026-03-14 10:54 by peike
[考研] 333求调剂 +3 球球古力 2026-03-09 3/150 2026-03-14 01:57 by JourneyLucky
[考研] 一志愿天津大学,英一数二305分求调剂,四六级已过 +8 小小番的茄 2026-03-09 8/400 2026-03-14 01:53 by JourneyLucky
[考研] 云南财经大学信息学院计算机学硕专硕学位点 +3 zjptai 2026-03-10 5/250 2026-03-14 01:23 by 飞行琦
[考研] 312求调剂 +6 陌宸希 2026-03-10 6/300 2026-03-14 00:40 by JourneyLucky
[考研] 321求调剂 +3 CUcat 2026-03-10 3/150 2026-03-14 00:25 by JourneyLucky
[考研] 材料与化工求调剂一志愿 985 总分 295 +8 dream…… 2026-03-12 8/400 2026-03-13 22:17 by 星空星月
[考研] 0856材料与化工301求调剂 +5 奕束光 2026-03-13 5/250 2026-03-13 22:00 by 星空星月
[考研] 26调剂/材料/英一数二/总分289/已过A区线 +6 步川酷紫123 2026-03-13 6/300 2026-03-13 21:59 by 星空星月
[考研] 293求调剂 +3 世界首富 2026-03-11 3/150 2026-03-13 16:27 by JourneyLucky
[考研] 【0856】化学工程(085602)313 分,本科学科评估A类院校化学工程与工艺,诚求调剂 +7 小刘快快上岸 2026-03-11 7/350 2026-03-13 16:06 by ruiyingmiao
[考研] 求调剂 +3 程雨杭 2026-03-12 3/150 2026-03-13 15:06 by JourneyLucky
[论文投稿] 投稿问题 5+4 星光灿烂xt 2026-03-12 6/300 2026-03-13 14:17 by god_tian
[考研] 0817化学工程与技术考研312分调剂 +3 T123 tt 2026-03-12 3/150 2026-03-13 10:49 by houyaoxu
[考研] 材料专硕274一志愿陕西师范大学求调剂 +4 薛云鹏 2026-03-13 4/200 2026-03-13 10:40 by 学员8dgXkO
[考研] 纺织、生物、化学、材料相关专业招生了 +4 耶耶业 2026-03-09 7/350 2026-03-12 19:05 by Equinoxhua
信息提示
请填处理意见