1. 初始化不是賦值,初始化的含義是建立變數時賦予其乙個初始值,而賦值的含義是把物件的當前值擦除,而以乙個新值來代替。
2.使用列表初始化內建型別的變數時,如果初始值存在丟失資訊的風險,則編譯器將報錯。
int i; //錯誤
3.如果想宣告乙個變數而非定義它,就在變數名前新增關鍵字extern,而且不要顯示的初始化它,任何包含了顯示初始化的宣告即成為定義。
externint i; //
宣告i而非定義i
int j; //
宣告並定義j
extern
double pi = 3.14; //
定義,如果在函式體內試圖初始化乙個extern變數將報錯
4.引用並非物件,相反的,它只是為乙個已經存在的物件起的另外乙個名字。
5.一旦引用的初始化完成,引用將和它的物件一直繫結在一起,所以引用在定義時必須初始化。
7.void* 是一種特殊的指標型別,可用於存放任意物件的位址,但是我們不知道這個位址中到底是個什麼型別的物件,所以也無法對這個物件做操作。
8.在定義多個變數的時候,型別修飾符(*或&)僅僅修飾最近的那個變數。
int* p1, p2; //p1是int指標,p2是int
9.引用本身不是乙個物件,所以不能定義指向引用的指標,也沒有引用的引用。
10.decltype的表示式如果是加上了括號的變數,結果將是引用。
int i = 0;decltype((i)) a;
//錯誤,a是int&,沒有初始化
decltype(i) b; //
正確,b是乙個int
C Primer 筆記三 變數
初始化 變數是命名的物件或引用,提供乙個具名的 可供程式操作的儲存空間。定義乙個變數的基本形式是 首先是型別說明符,然後緊跟由逗號分隔的變數名組成的列表,最後以分號結束。type objlist int sum 0,value 定義兩個int型變數,同時為sum賦初值為0在c 中,初始化和賦值是兩個...
C Primer 筆記之 變數和函式
32位機器上 cout 輸出 4 4 8 8 4也就是說只有long long 以及double是占用8個位元組的。1 引用和指標一樣,是繫結對物件的另外乙個名字,改變它或者它繫結的物件,都會使雙方改變 2 必須是乙個物件的別名,int b 1 是錯的 3 若繫結的物件時const型別,那麼引用也必...
C Primer學習筆記 變數宣告和定義
int a 0 int a 列表初始化,不能強制型別轉化 但是我試的是可以的 int a 0 int a 列表初始化,不能強制型別轉化宣告和定義的關係 c 語言支援 分離式編譯 可以將程式分割為若干個檔案,單獨編譯。當檔案 間變數共享時,會使用ectern將變數的宣告和使用分離開來。宣告 規定了變數...