我們在程式設計中,時時刻刻都用到變數的定義和變數的宣告,可有些時候我們對這個概念不是很清楚,知道它是怎麼用,但卻不知是怎麼一會事,下面我就簡單的把他們的區別介紹如下:(望我的指點對你受益)
變數的宣告有兩種情況:
1、一種是需要建立儲存空間的。例如:int a 在宣告的時候就已經建立了儲存空間。
2、另一種是不需要建立儲存空間的。 例如:extern int a 其中變數a是在別的檔案中定義的。
前者是「定義性宣告(defining declaration)」或者稱為「定義(definition)」,而後者是「引用性宣告(referncing declaration)」,從廣義的角度來講宣告中包含著定義,即定義是宣告的乙個特例,所以並非所有的宣告都是定義,例如:int a 它既是宣告,同時又是定義。然而對於 extern a 來講它只是宣告不是定義。一般的情況下我們常常這樣敘述,把建立空間的宣告稱之為「定義」,而把不需要建立儲存空間的宣告稱之為「宣告」。很明顯我們在這裡指的宣告是範圍比較窄的,即狹義上的宣告,也就是說非定義性質的宣告,例如:在主函式中:
int main()
int a; //是定義,定義了a為整型的外部變數外部變數的「定義」與外部變數的「宣告」是不相同的,外部變數的定義只能有一次,它的位置是在所有函式之外,而同乙個檔案中的外部變數宣告可以是多次的,它可以在函式之內(哪個函式要用就在那個函式中宣告)也可以在函式之外(在外部變數的定義點之前)。系統會根據外部變數的定義(而不是根據外部變數的宣告)分配儲存空間的。對於外部變數來講,初始化只能是在「定義」中進行,而不是在「宣告」中。所謂的「宣告」,其作用,是宣告該變數是乙個已在後面定義過的外部變數,僅僅是為了「提前」引用該變數而作的「宣告」而已。extern 只作宣告,不作任何定義。
(我們宣告的最終目的是為了提前使用,即在定義之前使用,如果不需要提前使用就沒有單獨宣告的必要,變數是如此,函式也是如此,所以宣告不會分配儲存空間,只有定義時才會分配儲存空間。)
用static來宣告乙個變數的作用有二:
(1)對於區域性變數用static宣告,則是為該變數分配的空間在整個程式的執行期內都始終存在。
(2)外部變數用static來宣告,則該變數的作用只限於本檔案模組。
變數宣告和定義
變數宣告 如果我們沒有特別寫出signed 有符號 或unsigned 無符號 變數預設為signed。所以我們要使用的變數都必須事先宣告過。和 語言的乙個重要區別是,在c 語言中我們可以在源程式中任何地方宣告變數,甚至可以在兩個可執行 excutable 語句的中間宣告變數,而不象在c語言中變數宣...
java面試寶典
分布式session的五種實現方式 redis memcache儲存session 伺服器端共享session 基於資料庫的session 基於cookie的session共享 基於nfs共享檔案系統 怎麼防止客戶端填寫的資料在提交過程中被篡改?加密 使用post提交 https runnable和...
java面試寶典
第二,anonymous inner class 匿名內部類 是否可以extends 繼承 其它類,是否可以implements 實現 inte ce 介面 可以繼承其他類或完成其他介面,在swing程式設計中常用此方式。第三,static nested class 和 inner class的不同...