c語言外部變量和全局變量 C語言中,全局變量和外部變量有什么區(qū)別?
C語言中,全局變量和外部變量有什么區(qū)別?全局變量也稱為外部變量,它是在函數(shù)外部定義的變量。它不屬于哪一個(gè)函數(shù),它屬于一個(gè)源程序文件。其作用域是整個(gè)源程序。在函數(shù)中使用全局變量,一般應(yīng)作全局變量說明。只
C語言中,全局變量和外部變量有什么區(qū)別?
全局變量也稱為外部變量,它是在函數(shù)外部定義的變量。
它不屬于哪一個(gè)函數(shù),它屬于一個(gè)源程序文件。其作用域是整個(gè)源程序。在函數(shù)中使用全局變量,一般應(yīng)作全局變量說明。只有在函數(shù)內(nèi)經(jīng)過說明的全局變量才能使用。全局變量的說明符為extern。但在一個(gè)函數(shù)之前定義的全局變量,在該函數(shù)內(nèi)使用可不再加以說明。外部變量是在函數(shù)外部定義的全局變量,它的作用域是從變量的定義處開始,到本程序文件的結(jié)尾。在此作用域內(nèi),全局變量可為各個(gè)函數(shù)所引用。編譯時(shí)將外部變量分配在靜態(tài)存儲(chǔ)區(qū)。有時(shí)需要在其他文件中使用extern來聲明外部變量,以擴(kuò)展外部變量的作用域。也可用static聲明外部變量,使該變量不能被其他文件引用。有時(shí)候他們是一樣的,只有稍微一點(diǎn)的區(qū)別而已,不用太過于區(qū)分的。C語言全局變量和局部變量會(huì)沖突嗎?為什么?
C語言中,看你怎么安放全局變量和局部變量了。如果你把全局變量和局部變量放在一個(gè)代碼文件內(nèi),那么就是沖突的。這么說不明顯,我寫個(gè)C程序代碼你就知道了,如下圖所示:
在這段C程序中,我在主函數(shù)main之外定義了一個(gè)全局變量para,并且給了一個(gè)初始值1。在C程序主函數(shù)main里面,我又定義了一個(gè)變量para,跟主函數(shù)之外的那個(gè)para是同名。
這里,C程序主函數(shù)外面的那個(gè)變量生命周期在整個(gè)代碼中有效,而主函數(shù)的這個(gè)變量只在主函數(shù)內(nèi)有效。
這也就是說,在C程序主函數(shù)里操作para變量,實(shí)際上操作的是主函數(shù)中的變量,外面的para變量值還是1。在這段C程序中,main函數(shù)中的para變量把外面的變量para給遮住了。
所以,同學(xué)們?cè)趯W(xué)習(xí)C語言時(shí),一定要注意這個(gè)全局變量被局部同名變量遮住的問題,同時(shí)也要了解變量的作用域和生命周期。