指針 數組 引用

基礎知識羅列
char v[6];
char* p;
[] 表示 array of
*表示pointer to
數組的大小應該是一個constant表達式

一元* 表示 contents of
一元&表示 address of

除了以前學過的for循環
新標準增加了一種可以range-for語句:

int v[] = {1,  2, 3};
for (auto x : v){
    std::cout << x << std::endl;
}

for (auto x : {1, 2, 3}){
    std::cout << x << std::endl;
}

我們來看看下面兩種讀法:
for (auto i=0; i!=10; ++i) // copy elements
v2[i]=v1[i];
set i to zero; while i is not 10, copy the ith element and increment i .

那range-for的讀法如下:
for every element of v, from the first to the last, place a copy in x and print it.

如果我們不僅僅是需要對對數組元素的拷貝進行處理,而是要對數據元素進行處理,eg:
for ( auto& x : v)
& 在聲明中表示 reference to
引用特別適合用在函數參數中,這樣就不會進行拷貝
如果不想function的參數被改變,又不想進行拷貝,eg:
void func ( const vector& x);
函數參數設置爲const引用非常常用

有一個nullptr關鍵字 表示空指針,對所有指針類型都適用
以前都是用NULL來表示,但有一個問題:NULL和0是可以替換的,如果有一個0,這時就無法區分是空指針還是數值0(ps:在一些著名的json開源庫中,這個問題坑了一大批使用者)

經常檢查指針是否爲空是必須的,儘量使用新標準提供的nullptr

如果我們不使用帶初始化的for循環,我們可以使用while循環來代替

cout <<
cin >>
<< 讀put to(用於輸出) >> 讀get from(用於輸入)

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