24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 2532  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[有机交流] 3-溴吡啶-4-甲醛合成 10+3 雪糕也能爆炸 2026-03-31 9/450 2026-04-06 00:24 by nBu锂
[考研] 材料求调剂 +11 一样YWY 2026-04-05 11/550 2026-04-05 23:36 by 来看流星雨10
[考研] 生物与医药086000调剂一志愿西北农林320分 +3 美美女士 2026-04-03 3/150 2026-04-05 21:55 by 学员8dgXkO
[考研] 304求调剂 +3 luoye0105 2026-04-05 3/150 2026-04-05 18:16 by 土木硕士招生
[考研] 工科08专硕机械275求调剂 +3 AaAa7420 2026-04-02 3/150 2026-04-05 13:26 by jp9609
[考研] 一志愿西北农林畜牧专硕336分求调剂 +3 5ourr 2026-04-03 3/150 2026-04-05 10:40 by JOKER0401
[考研] 301求调剂 +18 骆驼男人 2026-04-02 18/900 2026-04-04 20:33 by 蓝云思雨
[考研] 277工科求调剂 +7 1915668 2026-04-04 7/350 2026-04-04 17:21 by 啊俊!
[考研] 考研调剂 +4 美丽的youth_ 2026-04-04 5/250 2026-04-04 17:16 by imissbao
[考研] 一志愿东北大学085901土木专硕345求调剂 +3 zxt11111 2026-04-04 3/150 2026-04-04 14:21 by 土木硕士招生
[考研] 334求调剂 +8 曾仰之 2026-04-03 8/400 2026-04-04 11:16 by w_xuqing
[考研] 学硕288调剂!!! +3 小王xw123 2026-04-03 3/150 2026-04-03 21:20 by 啵啵啵0119
[考研] 294求调剂 +6 Grey_Ey 2026-04-03 6/300 2026-04-03 20:46 by 欣喜777
[考研] 336求调剂 +8 kiyy 2026-04-01 8/400 2026-04-03 19:41 by lijunpoly
[考研] 372分材料与化工(085600)一志愿湖南大学求调剂 +3 蓝笺片 2026-04-03 4/200 2026-04-03 17:58 by Jimmyandyou
[基金申请] esi高被引论文是不是能对中标有所加分和帮助呢 +5 redcom 2026-04-01 6/300 2026-04-03 15:15 by Howard28
[考研] 土木304求调剂 +4 兔突突突, 2026-04-02 5/250 2026-04-02 21:16 by 兔突突突,
[考研] 08开头看过来!!! +4 wwwwffffff 2026-03-31 6/300 2026-04-02 11:42 by 均值回归
[考研] 085410 一志愿211 22408分数359求调剂 +3 123456789qw 2026-03-31 4/200 2026-04-02 00:06 by 义文wang
[考研] 298求调剂 +4 什么是胖头鱼 2026-03-30 6/300 2026-04-01 22:06 by 客尔美德
信息提示
请填处理意见