24小时热门版块排行榜    

查看: 3203  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[教师之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 cqv1zKnzd7hr 2026-11-09 6/300 2026-11-11 10:32 by 1Nb0IVlmV6v0
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 cqv1zKnzd7hr 2026-11-09 6/300 2026-11-11 10:21 by 1Nb0IVlmV6v0
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +5 zSbvVX9JFl9J 2026-11-09 6/300 2026-11-11 10:13 by 1Nb0IVlmV6v0
[教师之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 zSbvVX9JFl9J 2026-11-09 7/350 2026-11-11 10:04 by 1Nb0IVlmV6v0
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 hNpp4Y2CGvSC 2026-11-04 13/650 2026-11-11 09:22 by Equinoxhua
[考博] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 FChKX8meu1ds 2026-11-09 5/250 2026-11-11 04:40 by Z7qfCsdIiD1T
[考研] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 FChKX8meu1ds 2026-11-09 5/250 2026-11-11 04:29 by Z7qfCsdIiD1T
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 FChKX8meu1ds 2026-11-09 6/300 2026-11-11 01:32 by Z7qfCsdIiD1T
[考博] 申请环境,微生物方向博士 +3 浅笑09 2026-11-08 3/150 2026-11-10 12:44 by 可淡不可忘
[教师之家] 延安大学回应“副教授留绝笔信”:确已离世,正核实举报内容 +4 yexuqing 2026-11-04 6/300 2026-11-10 11:13 by susizheng
[考博] 27博士申请 +3 白白白ly 2026-11-09 3/150 2026-11-09 21:39 by szq0819
[文学芳草园] 厉娜 +3 张丹枫1991 2026-11-09 5/250 2026-11-09 16:53 by 张丹枫1991
[考研] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 ttH3f1oA6ace 2026-11-04 15/750 2026-11-09 13:19 by Equinoxhua
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +6 5sJFDKp2kwuI 2026-11-06 14/700 2026-11-09 11:52 by GwrQVVR6Oenx
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +5 5sJFDKp2kwuI 2026-11-06 16/800 2026-11-09 11:47 by GwrQVVR6Oenx
[考研] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 5sJFDKp2kwuI 2026-11-06 12/600 2026-11-09 06:32 by l48hFd8Nwae2
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +5 5sJFDKp2kwuI 2026-11-06 9/450 2026-11-08 22:46 by l48hFd8Nwae2
[硕博家园] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 ttH3f1oA6ace 2026-11-04 11/550 2026-11-06 16:10 by 5sJFDKp2kwuI
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +6 kvewwGtKktqB 2026-11-04 16/800 2026-11-06 05:00 by qL1cU46YIdK0
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 ttH3f1oA6ace 2026-11-04 7/350 2026-11-06 02:13 by qL1cU46YIdK0
信息提示
请填处理意见