亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

局部變量與全局變量的問題

請問,下面的程序中怎么理解?

#include?<stdio.h>
int?x?=1;
????int?fn1(int?x)
????{
????int?y,z;
????z=2;
????y=x+z;
????printf("y=%d\n",y);????????????/*這里為什么會輸出“y=4”,在上面不是定義了“x=1;”的嗎?應該是3啊!雖然我懂下面的調用函數中“fn(2)”又定義了x值,但是為什么程序不使用“x=1”計算呢?*/
????return?0;
????}
????
????int?main()
????{
????????fn1(2);
????????int?y=10;
????????printf("x+y=%d",x+y);???/*這里為什么x值又是按照“x=1”計算的?*/
????????return?0;
????}

該程序得出的結果是

y=4

x+y=11

請大神幫忙解答!謝謝!

http://img1.sycdn.imooc.com//55c5aff40001b43713660746.jpg

正在回答

1 回答

在main()函數中先調用了fn1(2),所以此時將實參傳入,得x=2,這里的x為局部變量,y=2+2=4;

printf("x+y=%d",x+y);???這里用的x為全局變量,所以為10+1=11

1 回復 有任何疑惑可以回復我~
#1

沐竹雨 提問者

fn1(2)的優先級比較高嗎?所有這類型的函數和調用,都是調用函數的賦值的優先級高嗎?
2015-08-08 回復 有任何疑惑可以回復我~
#2

昨夜小樓泣東風 回復 沐竹雨 提問者

你理解錯啦,調用函數時,參數是唯一進入函數內的接口。fn1(2)中的2 為實參,而fn1(int x)中的x為形參,實參與形參相對應。因此傳入的值為2。
2015-08-08 回復 有任何疑惑可以回復我~
#3

沐竹雨 提問者 回復 昨夜小樓泣東風

忘了前面的概念!謝謝!懂了!
2015-08-08 回復 有任何疑惑可以回復我~
#4

小玖so 回復 昨夜小樓泣東風

形參跟實參不是太明確,我想問問,這里fn1(2)只調用一次形參嘛?
2015-08-24 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消
C語言入門
  • 參與學習       927001    人
  • 解答問題       21533    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

局部變量與全局變量的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號