A. 函數中的變數,在哪個范圍內有效
如果在一個函數中的復合語句中定義了一個變數,則以下正確的說法是該變數只在該復合語句中有效。
在一個函數內部定義的變數只在本函數范圍內有效,也就是說只有在本函數內才能引用它們,在此函數以外是不能使用這些變數的。在復合語句內定義的變數只在復合語句范圍內有效,只有在本復合語句內才能引用它們,在復合語句以外是不能使用這些比那裡的。
函數中的復合語句變數特點:
主函數中定義的變數也只在主函數中有效,並不因為在主函數中定義而在整個文件或程序中有效。
不同函數中可以使用同名的變數,它們代表不同的對象,互不幹擾。
全局變數的有效范圍為從定義變數的位置開始到本源文件結束。設置全局變數的作用是增加了函數間數據聯系的渠道。為了便於區別全局變數和局部變數,在C程序設計人員中有一個習慣,將全局變數的第1個字母用大寫表示(非規定)。
B. 一個關於C++全局變數的問題: 為什麼在不同的源文件中訪問一個頭文件中定義的全局靜態變數,地址不一樣
我剛才遇到了你差不多的問題,我的理解是:因為包含.h文件實際上就是把.h中的內容擴展到每個.c中;也就是說,擴展之後每個.c中都定義了這個變數;但又因為static對全局變數是有作用域限制的,所以他們之間的關系是名字一樣,(若沒有static則會報錯,重定義了)但分配的內存地址是不一樣的;通俗的講:編譯器認為每個包含了.h的文件的.c文件都單獨定義同名的變數,所以地址是不一樣的,還有,定義變數沒有在.h里定義的...