學習C++primer心得08.6.26

4.3.1. 創建動態數組

int *pia = new int[10];

new 動態創建長度爲 0 的數組時,new 返回有效的非零指針。該指針與 new 返回的其他指針不同,不能進行解引用操作,因爲它畢竟沒有指向任何元素。而允許的操作包括:比較運算,因此該指針能在循環中使用;在該指針上加(減)0;或者減去本身,得 0 值。

在關鍵字 delete 和指針之間的空方括號對是必不可少的:它告訴編譯器該指針指向的是自由存儲區中的數組,而並非單個對象。

與普通數組一樣,使用多維數組名時,實際上將其自動轉換爲指向該數組第一個元素的指針。

在下面的聲明中,圓括號是必不可少的:

int *ip[4]; // array of pointers to int

int (*ip)[4]; // pointer to an array of 4 ints

08.6.26

可以指向任何非 const 對象的指針類型。void* 指針只提供有限的幾種操作:可用作函數形參類型或返回類型,也可與其他指針做比較操作,但是不能進行解引用操作。

如果兩個操作數都是負數,除法操作的結果爲正數(或零),而求模操作的結果則爲負數(或零);

如果只有一個操作數爲負數,這兩種操作的結果取決於機器;求模結果的符號也取決於機器,而除法操作的值則是負數(或零):

expr && expr

expr || expr

邏輯與和邏輯或操作符總是先計算其左操作數,然後再計算其右操作數。只有在僅靠左操作數的值無法確定該邏輯表達式的結果時,纔會求解其右操作數。我們常常稱這種求值策略爲短路求值(short-circuit evaluation

位操作符操縱的整數的類型可以是有符號的也可以是無符號的。如果操作數爲負數,則位操作符如何處理其操作數的符號位依賴於機器。於是它們的應用可能不同:在一個應用環境中實現的程序可能無法用於另一應用環境。

位與操作(&)需要兩個整型操作數,在每個位的位置,如果兩個操作數對應的位都爲 1,則操作結果中該位爲 1,否則爲 0

&

bitwise AND(位與)

expr1 & expr2

^

bitwise XOR(位異或)

expr1 ^ expr2

|

bitwise OR(位或)

expr1 | expr2

由於後自增操作的優先級高於解引用操作,因此 *iter++ 等效於 *(iter++)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章