C Primer讀書筆記整理(二)

2022-07-26 08:24:11 字數 1056 閱讀 1798

8.陣列

標準庫begin和end函式可作用於陣列,分別用於獲取指向陣列首元素和尾元素下一位置的指標。

例如:

int ia = ;

int *beg = begin(ia); //

beg指向陣列首元素

int *e = end(ia); //

e指向陣列尾元素下一位置

begin和end函式定義在標頭檔案iterator中。

另外:可以使用陣列來初始化vector的物件:

int arr = ;

vector

ivec(begin(arr), end(arr));

9.多維陣列

使用範圍for語句處理多維陣列要注意,除了最內層的迴圈外,其他所有迴圈的控制變數都應該是引用型別

例如:int arr = ,};

for(auto &a:arr)

for(auto b:a)

cout

《如果a不是引用型別,所用編譯器初始化a時會自動將這些陣列形式的元素轉換成指向該陣列內首元素的指標,

這樣得到的a的型別是int*型,顯然不合法,之所以最內層可以不用引用是因為a是一維陣列,因此推導出b

的型別為int,合法。

10.運算子優先順序

前置++和*的優先順序是相同的,都是從左到右結合;

後置++的優先順序高於*和前置++,後置++從左到右結合。

這一點一定要特別記住。

11.含有可變形參的函式

為了能編寫處理不同數量形參的函式,c++11新標準提供了兩種主要方法:如果所有的實參型別

相同,可以傳遞名為initializer_list的標準庫型別,如果實參型別不同,我們可以編寫一種特殊的函式,也就是所謂的可變引數模板。

其中initializer_list物件中元素永遠是常量值,我們無法改變其中元素的值。

12.函式的返回值

1)不要返回區域性物件的引用或指標,因為一旦函式返回,區域性物件的指標或引用就失效了。

2)呼叫乙個返回引用的函式返回左值,其他返回型別得到右值。

未完待續......

C Primer讀書筆記(二

關於delete一些注意點 在delete之後,最好要重設指標的值,舉例 delete p 執行之後 p變成了沒有定義,在很多機器上,儘管p沒有意義,但是仍然存放它之前所指向物件的位址,然後p所指向的記憶體已經被釋放,因為p不在有效。刪除指標之後,該指標變成懸垂指標,懸垂指標指向曾經存放的記憶體,但...

C primer 讀書筆記

第2 章 變數和基本型別 1 變數直接初始化和變數 複製初始化 int ival 1024 direct initialization int ival 1024 copy initialization 初始化不是賦值 2 內建型別復 制初始化和直接初始化幾乎沒有區別 但 對類型別物件來 說,有些初...

C Primer讀書筆記

前些日子開始看 c primer 順便做一些筆記,既有書上的,也有自己理解的。因為剛學c 不久,筆下難免有謬誤之處,行文更是凌亂 所幸不是用來顯配的東西,發在linuxsir只是為了方便自己閱讀記憶,以防只顧上網忘了正事。書看了不到一半,所以大約才寫了一半,慢慢補充。const要注意的問題 1 下面...