變量為我們提供了一個有名字的內存存貯空間。可以通過程序對其進行 讀寫,處理操作。
c++中給個符號變量都有一個符號類型與之對應。這個類型決定了相關內存的大小,類型,布局,能夠存貯在該內存值的范圍。以及可以以用到其上的操作集。我們也可以把變量說成是對象(object)
。
變量和文字常量都有存貯區,并且都有相關的類型。區別在于變量是可以尋址的(adressable)常量文字是不可以尋址的(nonadressable),每一個變量都有兩個值與之聯系著,
1:數據值。存貯在內存的某個存貯區之中。有時候這個數據值也被稱為是右值(rvalue).我們可以認為右值是被讀取的值。文字常量和變量都可以被用來做右值。
2:它的地址值。即存貯它數據值的那塊內存的地址。它有時候被稱為左值(lvalue)。我們也可以認為左值的意思是位置值。文字常量不能被用作左值。
變量的定義會引起相關內存的分配。因為一個對象只能有一個存貯位置,所以一個對象只能被定義一次。如果在一個文件中定義的對象需要在另一個文件中被訪問,那么就會出現問題。
在c++中,對象在使用之前必須知道對象,引用一個未知的對象會引起編譯器的錯誤。
如果一個對象在另一個 文件中聲明著,我們想在這個文件中來使用這個對象,但是又不能在這個文件中在聲明相同的對象。那么我們可以使用extern關鍵字來聲明這個對象。
例如; file module.c
string aaaaa;
///定義了對象aaaaa
file module1.c
////需要使用對象aaaaa.,
////聲明對象aaaaa,使程序知道它。但是又不能引入第二個定義。
extern string aaaaa;
對象聲明是使程序知道對象的類型和名字。它由關鍵字extern后面跟對象的類型和對象的名字構成。
聲明不是定義,不會引起內存的分配。實際上它只是說明了在程序之外的某處有這個變量的定義。
雖然一個程序中只能包含一個對象的定義,但是可以包含很多的對象聲明。
比較好的做法是: 不是在每個要使用的文件中都單獨提供一個聲明。而是在在頭文件中聲明這個對象,然后在需要聲明這個對象的時候包含這個頭文件就好了。按照這個做法。如果需要修改對象的聲明只需要修改一次。就能維持多個使用這個對象的聲明文件的一致性。
c++中給個符號變量都有一個符號類型與之對應。這個類型決定了相關內存的大小,類型,布局,能夠存貯在該內存值的范圍。以及可以以用到其上的操作集。我們也可以把變量說成是對象(object)
。
變量和文字常量都有存貯區,并且都有相關的類型。區別在于變量是可以尋址的(adressable)常量文字是不可以尋址的(nonadressable),每一個變量都有兩個值與之聯系著,
1:數據值。存貯在內存的某個存貯區之中。有時候這個數據值也被稱為是右值(rvalue).我們可以認為右值是被讀取的值。文字常量和變量都可以被用來做右值。
2:它的地址值。即存貯它數據值的那塊內存的地址。它有時候被稱為左值(lvalue)。我們也可以認為左值的意思是位置值。文字常量不能被用作左值。
變量的定義會引起相關內存的分配。因為一個對象只能有一個存貯位置,所以一個對象只能被定義一次。如果在一個文件中定義的對象需要在另一個文件中被訪問,那么就會出現問題。
在c++中,對象在使用之前必須知道對象,引用一個未知的對象會引起編譯器的錯誤。
如果一個對象在另一個 文件中聲明著,我們想在這個文件中來使用這個對象,但是又不能在這個文件中在聲明相同的對象。那么我們可以使用extern關鍵字來聲明這個對象。
例如; file module.c
string aaaaa;
///定義了對象aaaaa
file module1.c
////需要使用對象aaaaa.,
////聲明對象aaaaa,使程序知道它。但是又不能引入第二個定義。
extern string aaaaa;
對象聲明是使程序知道對象的類型和名字。它由關鍵字extern后面跟對象的類型和對象的名字構成。
聲明不是定義,不會引起內存的分配。實際上它只是說明了在程序之外的某處有這個變量的定義。
雖然一個程序中只能包含一個對象的定義,但是可以包含很多的對象聲明。
比較好的做法是: 不是在每個要使用的文件中都單獨提供一個聲明。而是在在頭文件中聲明這個對象,然后在需要聲明這個對象的時候包含這個頭文件就好了。按照這個做法。如果需要修改對象的聲明只需要修改一次。就能維持多個使用這個對象的聲明文件的一致性。