練習2.30:對於下面的這些語句,請說明物件被宣告成了頂層const還是底層const?
const int v2 = 0; //v2的值不能被改變,所以這是乙個頂層const
int v1 = v2;
int *p1 = &v1, &r1 = v1;
const int *p2 = &v2; //p2存放的是v2的位址,不能間接改變v2的值,但p2的值可以改//變,所以這是乙個底層const
const int *const p3 = &i, &r2 = v2; //p3 是乙個常量指標,一直存放i的位址,不能改變,//所以靠近p3的是乙個頂層const,而無法間接更改i的值,因此左邊的const是乙個底層const。
練習2.31:假設已有上乙個練習中所做的那些宣告,則下面的哪些語句是合法的?請說明頂層const和底層const在每個例子中有何體現。
r1 = v2 ; // 合法,可以 頂層const拷貝沒有什麼影響
p1 = p2; // 非法 非常量可以轉化成常量 反之不行
p2 = p1;// 合法
p1 = p3;// 非法 非常量可以轉化成常量 反之不行
p2 = p3;// 合法。執行拷貝操作並不會改變被拷貝物件的值,因此,拷入和拷出的物件是否是常量都沒什麼影響 底層const拷貝要看兩邊的型別是否一致
C Primer第五版 2 5 3節練習
練習 2.36 關於下面的 請指出乙個變數的型別以及程式結束時它們各自的值。include int main 練習 2.37 賦值是會產生引用的一類典型表示式,引用的型別就是左值的型別。也就是說,如果i是int,則表示式 i x的型別是int 根據這一特點,請指出下面的 中每乙個變數的型別和值。in...
C Primer第五版 3 2 2節練習
練習3.2 編寫一段程式從標準輸入中一次讀入一整行,然後修改該程式使其一次讀入乙個詞。練習3.3 請說明string類的輸入運算子和getline函式分別是如何處理空白字元的。練習 3.4 編寫一段程式讀入兩個字串,比較其是否相等並輸出結果。如果不相等,輸出較大的那個字串。改寫上述程式,比較輸入的兩...
C Primer第五版 3 3 1節練習
練習3.12 下列vector物件的定義有不正確的嗎?如果有,請指出來。對於正確的,描述其執行結果 對於不正確的,說明其錯誤的原因。a vector ivec b vector svec ivec c vector svec 10,null 練習3.13 下列的vector物件包含多少個元素?這些元...