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 下面...