1. 程式人生 > >C++ primer 學習筆記(到第四章)

C++ primer 學習筆記(到第四章)

1、計算機內部實現過程有別,詳細如下:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

i=i+1的過程相當:

  temp=i+1; i=temp;

i++的過程相當:

  temp=i; i=temp+1; return temp;

++i的過程最簡單:

i增1然後return i 的值,一步完成,沒有給任何temp變數賦值

I++必須完成整個表示式後才進行++;

2、for迴圈

先初始化,然後測試條件,如果滿足則進行迴圈。

For內的初始化不能在迴圈外部訪問。

3、編譯器能查出的普通錯誤:1.語法錯誤2.型別錯誤3.宣告錯誤

4、Unsigned =unsigned int

5、C++中,負數賦給unsigned是完全合法的,結果為取摸

6、Float能保證6位有效數字,而double能保證10位有效數字

7、20 十進位制

020 八進位制

0x20 十六進位制

doublea=10e0f;

8、換行符 /n水平製表符 /t

縱向製表符 /v    退格符    /b

回車符     /r     進紙符   /f

報警(響鈴)符 /a   反斜線  //

疑問號    /?      單引號    /'

雙引號    /"

通用轉義字元 /000   /0xddd

9、反斜槓/可以斷開c++語句,但是/後必須無字元,下一行必須無空格

10、初始化不是賦值:賦值要擦除原來的資料,初始化有:複製初始化= 直接初始化();

直接初始化語法更靈活,效率更高;

11、std::string 初始化 a="lfieng"; a("lfieng"); a(10,'l');

12、初始化:函式體外的內建變數初始化為0;函式體內不自動初始化;

13、Extern只是宣告變數,宣告有初始化也可以當作定義 ,所以extern int i=0 也是定義

14、全域性變數可在區域性作用域和語句作用域使用,但是區域性變數可覆蓋同名全域性變數。

15、普通變數全域性定義和宣告 ;非const預設為extern,常量必須賦值.

1.cpp

Int a;

2.Cpp

Extern int a;

++a;

常量全域性定義和宣告

1.Cpp

Extern const  int a=10;

2.Cpp  :extern const int a; a++;

16、&為引用,即複合型別,只是一個別名,對引用的操作就是對繫結物件的操作。

Const引用繫結const物件

17、typedef用於:

為了隱藏特定型別的實現,強調實用型別的目的

簡化複雜的型別定義,使其更容易理解

允許一種型別用於多個目的,同時是得每次使用該型別的目的明確。

18、列舉enum初始化enum a {a=1,b,b};

19、用class來定義類,則在第一個訪問標號前的成員都是private,

用struct來定義類,則成員都是public

Struct 值型別  Class引用型別 

Struct 無析溝函式 Class有 

Struct 建構函式必須要有引數  Class 可以無 

Struct 不能繼承Struct和Class Class 可以繼承Class 

小結構用struct,大結構用class

struct一般分配在棧區,賦值的時候是拷貝記憶體

class一般分配在堆區,賦值的時候是複製指標

20、標頭檔案是用於宣告的而不是定義,例外:可定義類,值得編譯是就已知道的const物件和inline函式。Const變數使用常量表達式初始化的可以放在標頭檔案中,如果不是,則要放在原始檔中,並在標頭檔案中新增extern宣告。

21、被多次包含的標頭檔案要加標頭檔案保護符,

22、字串字面值與string是不同的型別;string從不是空格開是讀取,到空格是停止讀取

23、String a;a.size()返回的是string::size_type;  string的+左右運算元中必須有一個string

24、String的字元函式 string 無參初始化為空格;

標頭檔案 cctype;

Isalnum(C) 字母或數字 true

Isalpha(C) 字母 true

Iscntrl(C)  控制字元 true

Isdigit(C)  數字 true

Isgraph(C) 不是空格,但可列印 true

Islower(C) 小寫字母 true

Isprint(C) 可列印字元 true

Ispunct(C) 標點符號 true

Isspace(C) 空白字元 true

Isupper(C) 大寫字母 true

Isxdigit(C) 十六進位制數 true

Tolower(C) 如C是大寫 返回小寫 否則返回C

Toupper(C)如C是小寫 返回大寫 否則返回C

25、vector只是一個類模板,只有vector<int>或vector<string>才是資料型別自動初始化,int為0,string為該型別的初始化

函式:v.empty()

V.size()

V.push_back(t)

V[n]

=,==,<,!=,<=,>,>=

26、c++習慣與用!=來判斷條件

27、Const_iterator 引用的是const值

constvector<intv2(10,9);

//const vector<int>::iterator iter2=v2.begin();  這是錯誤的

vector<int>::const_iteratoriter3=v2.begin();

28、bitset賦值:

1.bitset<16> b(0xffff);

2.String a("0010");bitset<16> c(a);

3.Bitset<16> a(s,5,4);bitset<16> a(s,s.size()-4);

Bitset含有多個測試函式

29、char 賦值

Char a[4]={'a','b','c','/0'};

Char b[4]="abc";

30、陣列的下標型別 size_t,它是unsigned;

31、Void *指標,可以儲存任何型別的指標。

32、陣列中,陣列名自動指向陣列的第一個元素

33、指標相減的值型別為ptrdiff_t,它是signed;

34、指標運算元組:

Const size_t arr_sz=5;

Int int_arr[arr_sz]={0,1,2,3,4};

For(int *pbegin=int_arr,*pend=int_arr+arr_sz;

Pbegin!=pend;++pdegin;

Cout<<*pbegin<<'  ';