C語言外部變數與區域性變數同名問題

時間 2021-10-17 04:48:57

1樓:莫霞板申

inta=3,b=5;

/*定義全域性變數,整個檔案作用域有效*/

max(int

a,int

b)/*入參總是a=8,b=5*/

void

main()

2樓:麼秀英天香

a=3,b=5;是全域性變數整個程式中可見,a=8為區域性變數;

區域性變數會在其作用域內遮蔽全域性變數,所以在main函式中a的值是8,b依然取全域性值5。

結果max(a,b)為8

3樓:浦利仍妙旋

如果區域性變數和全域性變數同名,那麼重名的全域性變數將在同名的區域性變數的作用域內隱藏。

4樓:匿名使用者

如果全域性變數和區域性變數重名,區域性變數將覆蓋全域性變數。所以區域性a覆蓋全域性amain內a = 8但是全域性b你沒有重名的,所以,main中b是全域性變數b=5懂?覆蓋的只是重名的,不是全部的,懂?

5樓:匿名使用者

int a=3,b=5; max(int a,int b) void main() (int a=8; printf("%d\n",max(a,b)); } 解答:a=3,b=5是全域性變數。因為最後一個a有賦值8,優先使用內部變數,a=8比b=5大,所以max取8.

6樓:匿名使用者

主函式是執行函式,所以必然執行main()

在main()中,重新定義並且賦值了區域性變數a=8,而max(a,b)求值的時候,a用的是區域性變數,因為它在區域性裡的優先順序大於全域性變數,而b沒有區域性變數,所以用到全域性變數b=5,因此求的是max(8,5)

7樓:匿名使用者

#include int a = 3,b = 5; int max(int a,int b) void main() main()函式中,定義了區域性變數a,所以這裡所有的a都是指區域性變數,全域性變數a在這裡沒有「立足之地」,當變數b則不同,由於在main()中沒有樑歪定義。所以這裡的b指的就是全域性變數b,所以呼叫函式max(a,b)等同於max(8,5)。

c語言問題 區域性變數能不能和全域性變數重名?

8樓:花落へべ若相惜

可以,只不過區域性變數可以覆蓋全域性的,就是在區域性變數的範圍內全域性變數不起作用

9樓:與子如初見

能,區域性會抄遮蔽全域性

。要用襲全域性變數,需要使用 "::" ;

區域性變數bai

可以與全域性變數同名du

,在函zhi數內引用這個變數時,會用到dao同名的區域性變數,而不會用到全域性變數。對於有些

編譯器而言,在同一個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義一個同名的區域性變數,而那

個區域性變數的作用域就在那個迴圈體內。

c語言中區域性變數可以同名麼?

10樓:匿名使用者

在c語言中,來相同作用域範源圍的區域性變bai量不可以同名。所以,du在不同作用域下,zhi可以出現區域性變數同dao名的情況。

1 在不同函式中。

函式不同,區域性變數完全無關,自然可以使用相同的名字。

2 在同一函式中,但作用域不同。

區域性變數的作用域是定義位置,到所在大括號結束。

所以只要兩個區域性變數屬於不同的大括號中,就可以同名。

比如void func()

for(;;)

}這裡面,第一個a的作用域包含了第二個和第三個,而後兩個之間作用域不相關。三個a分別屬於三個不同的大括號,可以同名。

11樓:匿名使用者

這個問題,其實舉例子什麼的都說都涵蓋不清楚。可以通俗的這樣說,在同一作用域內變數是不能重名的,原因很簡單,要是重名了,編譯器也不知道你呼叫的是哪個變數了。

12樓:匿名使用者

按你的語意來bai說,答案是不可du以的.

區域性指的就是

zhi一個域,在dao同一個域內變數內是不可以同名的.在vc++2005之前的版容本中.for迴圈的條件名句是限制在for迴圈內的,不過2010後的vc++版本,在for迴圈條件內申請的變數在迴圈個再次申請了報錯,

13樓:匿名使用者

區域性變數在不同的子函式中可以同名,但是在一個子函式中不能。

14樓:匿名使用者

如果你定義的變數不在同一個函式內,好像可以同名的。

15樓:匿名使用者

可以的啊。區域性變數的生存週期就在函式體內或迴圈體內

16樓:匿名使用者

看你同名的區域性變數的作用域了,如果作用域相同那就不可以了

17樓:匿名使用者

可以同名,例如:

在不同的兩個迴圈內:

for(int i=0; i<5; i++)for(int i=0; i<6; i++)

18樓:尼瑪真響亮

作用範圍不同的可以重名

c語言中全域性變數和區域性變數是一樣的名字有問題嗎?

19樓:老樹枝勾琬

如果內層**塊對外層**塊中的名字進行了重新定義,那麼在這個內層**塊中,外層的名字就被隱藏,

在離開這個內層**塊後,這些名字又再次表示外層的變數。

20樓:

區域性變數的作用域中全域性變數被遮蔽了

不受影響

但是最好起不同的變數名

自己也容易檢查不是嗎

21樓:督秀珍施己

this.temp=temp

不會有問題

各自的作用域不同

但是你要分的清楚才好

不建議使用相同的變數名

c語言中變數的平方怎麼輸入,C語言中變數的平方怎麼輸入

天雲一號 在c 中,變數a的平方可以有2種方式進行輸入 1 直接本身相乘a a 2 用函式pow進行求變數a的平方,即pow a,2 注 函式pow的用法如下 函式格式 double pow double x,double y 功 能 計算x的y次冪 返 回 值 計算結果 當使用pow函式時,需要將...

c語言auto定義變數,關於c語言auto變數和static變數區別

在函式內部定義的變數成為區域性變數。在某些c語言教材中,區域性變數稱為自動變數,這就與使用可選關鍵字aut o定義區域性變數這一作法保持一致。區域性變數僅由其被定義的模組內部的語句所訪問。換言之,區域性變數在自己的 模組之外是不可知的。切記 模組以左花 括號開始,以右花括號結束。對於區域性變數,要了...

c語言變數初始化的方式,C語言中變數的初始化怎麼理解?

全域性變數的初始化 對於不同編譯單位的全域性變數,其初始化的順序沒有任何的保證,因此對不同編譯單位裡的全域性變數,在它們的初始化順序之間建立依賴性都是不明智的。此外也沒辦法捕捉到全域性變數初始化丟擲的異常,一般來說要減少全域性變數的使用,特別是限制那些要求複雜初始化的全域性變數。1,儘量不用全域性變...