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語言中,區域性變數的預設儲存類別為A auto B static C register D extern

a.auto b.static c.register d.extern a 的變數在堆疊裡,自然是執行時 b 是靜態變數 c 是暫存器變數,使用的是cpu的暫存器 d 是全域性變數 bd都是放在資料段中的,編譯的時候就已經確定了位置 有的編譯器對b和d的處理不一樣 c語言 a,函式內部或語句組內部的...

c語言中,全域性變數和外部變數有什麼區別

外部變數也是全域性變數,被定義成外部變數是指這個變數沒有在當前 中,而是在另乙個 或二進位制檔案中。比如我在a.c中定義了變數myvar,還有乙個檔案b.c,它要用a.c中的myvar,這就要讓b.c知道myvar怎麼定義的,有兩種方法,一種是include a.c,但一般不這麼做 還有一種方法是在...

C語言中,全域性變數和外部變數有什麼區別

舉個生動的例子 全域性變數就像你們這棟樓 樓道裡的垃圾桶 外部變數相當於其他樓裡的垃圾桶 全域性變數的作用域是當前整個檔案 其他檔案要使用它,應該用extern來宣告它此時對於要用它的檔案來說,它就變成了外部變數了。全域性變數也稱為外部變數,它是在函式外部定義的變數。它不屬於哪乙個函式,它屬於乙個源...