c 學習總結 幾個c 11的知識點

2021-09-27 10:39:00 字數 1974 閱讀 2439

auto關鍵字

1.概念::auto不再是乙個儲存型別指示符,而是作為乙個新的型別指 示符來指示編譯器,auto宣告的變數必須由編譯器在編譯時期推導而得.

注意:auto是乙個根據給的資料確定型別的符號,可以說他不是一種"型別"的申明符,它更像是乙個佔位符,佔著位置,給句位置上的資料給型別的符號,所以一定要初始化.

int

testauto()

intmain()

2.使用細則

(1) auto與指標和引用結合起來使用

用auto宣告指標型別時,用auto和auto*沒有任何區別,但用auto宣告引用型別時則必須加&

(2)在同一行定義多個變數

當在同一行宣告多個變數時,這些變數必須是相同的型別,否則編譯器將會報錯,因為編譯器實際只對第乙個 型別進行推導,然後用推導出來的型別定義其他變數。

3.不可以使用的場景

(1)不能作為函式的引數

(2)不能直接用來申明陣列

(3) auto不能定義類的非靜態成員變數

(4)例項化模板時不能使用auto作為模板引數

基於範圍的for迴圈

1.概念

對於乙個有範圍的集合而言,由程式設計師來說明迴圈的範圍是多餘的,有時候還會容易犯錯誤。因此c++11中引 入了基於範圍的for迴圈。for迴圈後的括號由冒號「 :」分為兩部分:第一部分是範圍內用於迭代的變數,第二 部分則表示被迭代的範圍

例如:

void

testfor()

;for

(int i =

0; i <

sizeof

(array)

/sizeof

(array[0]

);++i)

array[i]*=

2;for(

int* p = array;p < array +

sizeof

(array)

/sizeof

(array[0]

);++p)

cout <<

*p << endl;

}

void

testfor()

;for

(auto

& e : array) e *=2

;for

(auto e : array) cout << e <<

" ";

return0;

}

2.使用條件

(1)迴圈範圍必須是確定的

(2)迭代的物件要實現++和==的操作。

指標空值

1.概念

null可能被定義為字面常量0,或者被定義為無型別指標(void*)的常量。不論採取何種定義,在 使用空值的指標時,都不可避免的會遇到一些麻煩

.2 nullptr 與 nullptr_t

為了考慮相容性,c++11並沒有消除常量0的二義性,c++11給出了全新的nullptr表示空值指標。c++11為什麼 不在null的基礎上進行擴充套件,這是因為null以前就是乙個巨集,而且不同的編譯器廠商對於null的實現可能 不太相同,而且直接擴充套件null,可能會影響以前舊的程式。因此:為了避免混淆,c++11提供了nullptr, 即:nullptr代表乙個指標空值常量。nullptr是有型別的,其型別為nullptr_t,僅僅可以被隱式轉化為指標類 型,nullptr_t被定義在標頭檔案中:

typedef decltype(nullptr) nullptr_t;

注意:在使用nullptr表示指標空值時,不需要包含標頭檔案,因為nullptr是c++11作為新關鍵字引入的。

在c++11中,sizeof(nullptr) 與 sizeof((void*)0)所佔的位元組數相同。

為了提高**的健壯性,在後續表示指標空值時建議好使用nullptr。

C 的幾個知識點

1 陣列的氣泡排序 int nums new int int temp 0 for int j 0 j nums.length 1 j for int i 0 i nums.length i console.readkey 2 反轉語句 array.reverse nums for int i le...

C 11 標準及知識點的記錄 1

1 constexpr和常量表示式 常量表示式 const expression 是指值不會改變並且在編譯過程就能得到的計算結果。c 11 新標準規定,允許將變數宣告為constexpr型別以便由編譯器來驗證變數的值是否乙個常量表示式。宣告為constexpr的變數一定是乙個常量,而且必須用常量表示...

C 11標準及知識點的記錄(3)

建構函式 1 類通過乙個或幾個特殊的成員函式來控制其物件的初始化過程。2 建構函式的任務是初始化類物件和資料成員,無論何時只要類的物件被建立,就會執行建構函式。3 沒有返回型別。4 建構函式可以過載 不同的建構函式之間必須在引數數量或引數型別上有所不同 5 不同於其他成員函式,建構函式不能被宣告為c...