C 較C新功能

2021-07-11 11:13:26 字數 1637 閱讀 1787

讀《c++ primer 第5版》(c++11標準),一些記錄

1. 變數初始化、列表初始化

c++語言定義了好幾種初始化形式,如:

①int units_sold = 0;

②int units_sold = ;

③int units_sold;

④int units_sold(0);

四種形式等價,但②和③不執行強制型別轉換,如:

long double ld = 3.1415926536

int a, b = ;// a和b編譯會報錯

2. 函式內部使用全域性作用域 (p44)

如 int reused = 42;

int main()

3. 引用(reference)

定義:為已有物件起另乙個名字,它不是乙個物件,用&d的形式

注:①必須賦初值 如:

int ival = 1024;

int &refval = ival;// refval即ival,他倆繫結(bind)在一起,是乙個東西

//因此

refval = 2; // 即ival = 2;

注:②可以連續引用 如:

int &refval3 = refval;// 即refval3也是ival

4. 指向指標的引用(p52) 如:

int i = 42;

int *p;

int *&r = p; // r是指標p的引用

//因此

r = &i;// 即指標p賦值為&i

5. 常量引用(p55)

常量的引用會引入臨時變數,如:

double dval = 3.14;

const int &ri = dval;// 正確

會引入:

const int temp = dval;

const int &ri = temp;

6. constexpr 變數(p59)

c++11新加,如果認定變數為乙個常量,就用constexpr宣告,如:

constexpr int mf = 20;

注意:constexpr無法修飾指標裡的值,如:

constexpr int *q = nullptr;// q為常量指標

7. string

①宣告:

string s1;// 空string

string s2(s1); 等價於 string s2 = s1;

string s4(n, 'c'); // n個c

②操作cin >> s

cout << s << endl

getline(cin, s) // 從cin讀取一行資料(不包含換行),賦值給s

s.empty()

s.size()

8. c++版本標頭檔案(與c對比)(p82)

a. c++版本 / c版本 ,其實內容都是一樣的

b. c++標頭檔案定義名字從屬於命名空間std 

9. 範圍for(range for)語句(p83) 例:

string str("some string");

for (auto c : str) // 這裡auto是char

cout << c << endl;

C 新功能 命名引數

命名引數會潛在的改變編寫 的方式.這個新功能能使 更容易閱讀和理解.例如,看一下system.io命名空間中的file.copy 方法,它一般構建為 file.copy c mytestfile.txt c myotherfile.txt true 在這行 中,這個簡單的方法使用3個引數,但實際傳遞...

C 新功能 命名引數

命名引數會潛在的改變編寫 的方式.這個新功能能使 更容易閱讀和理解.例如,看一下system.io命名空間中的file.copy 方法,它一般構建為 file.copy c mytestfile.txt c myotherfile.txt true 在這行 中,這個簡單的方法使用3個引數,但實際傳遞...

c99的新功能

參考 在ansi的標準確立後,c語言的規範在一段時間內沒有大的變動,然而c 在自己的標準化建立過程中繼續發展壯大。標準修正案一 在1994年為c語言建立了乙個新標準,但是只修正了一些c89標準中的細節和增加更多更廣的國際字符集支援。不過,這個標準引出了1999年iso 9899 1999的發表。它通...