《c++ primer plus 第6版》讀書筆記
知識點:
1.c++陣列初始化 可以省略「=」
int lift[10] ; 等價 int lift[10] = ;
int lift[10] {}; //等於
2.'s' 是83的另一種寫法。「s」 表示 s和\0 並且「s」 表示的為位址
3.鍵盤輸入讀取一行處理
cin.getline(name1, 19); 讀取一行輸入,丟棄換行符,自動結尾加空字元
cin.get(name1,19);讀取一行輸入,保留換行符,自動結尾加空字元
cin.get(); //是讀取乙個字元 可用於讀取回車
cin.get(name1,19).get(); //可用於讀取字串,並讀取回車
4.字串操作(string)
string str1, str3;
string str2 = "hello world!";
str1 = str2;
str3 = str1 + str2;
str1.size();
5.長字串
wchar_t name1 = l"hello world";
char16_t name2=u"hello world";
char32_t name3=u"hello world";
6.原始字串
cout << r"(i love you "king" to "\n" for sec)"《列印:i love you "king" to "\n" for sec
列印「(方法:
cout << r"+*(i love you "king" to "\n" for sec)+*"<7.c++不提倡使用全域性變數
8.結構體複製
struct sname1; //初始化 如果只有{} 初始化為0
sname2 = sname1;
9.結構中的位欄位
struct sname2; //初始化
10.作用域內列舉
enum en;
en bis;
bis = en(19); // 這是合法的, 19屬於列舉區間內 0 ~ 31。 離20最近的2的冪為32,32 -1 就是列舉的上限。下限演算法相同
11.oop強調執行階段決策,即執行時決定分配多少所需的空間。
12.給指標複製,必須強制型別轉換
int *p;
p = (int *)0xb8000000;
13.指標與變數的大小
double *pn = new double; //double 為8位元組
*pn = 0.0001
sizeof(pn), sizeof(*pn).
列印: 4 8
14.new 分配的空間是堆,這點顯而易見。new 和 delete 成對出現
15.陣列分配空間
int *p = new int[20];
delete p;
16.delete 不應對乙個指標釋放兩次,對空指標delete兩次是安全的
17.指標和陣列等價
int *p = new int[20];
p[3] = 5;
p = p +1; //p指向第二個元素,指標位址增加了4個位元組,指標會根據指標型別的長度增加位址
delete p;
18.陣列名與指標
short tell[10];
cout << tell << endl;//陣列名為第乙個元素的位址
cout << &tell << endl;//陣列名取位址是整個陣列的位址
//雖然位址相同,但是+1的結果不同,
cout << tell + 1 << endl;//陣列名為第乙個元素的位址,加兩個位元組
cout << &tell + 1<< endl;//陣列名取位址是整個陣列的位址,加20個位元組
//tell 等價於 &tell[0] 這是乙個兩位元組的記憶體位址, tell+1 位址值加2. tell是乙個 short * 指標
//&tell 是乙個20位元組的記憶體位址 &tell +1 位址值加20。&tell 是 short (*)[10]陣列。
//初始化指標 short (*pas)[20] = &tell //括號不能省略,不然pas先與[20]結合,變成指標陣列,包含20個元素。
//(*psa)[0] 第乙個元素
20.cout 會列印指標位址,但如果指標是 char * 則會列印指標指向的字串,需要強制轉換來列印char *的位址 (int *)
21.自動儲存的變數放到棧(後進先出lifo)中,反向被釋放。棧將不斷變大和縮小。
22.指標的指標,陣列與指標
#include "stdafx.h"
#include struct times
;int _tmain(int argc, _tchar* argv)
; //指標陣列,每一位存乙個指標
(ppd[1])->year = 2002;
cout << "s2.year = " << s2.year << endl;
//陣列的指標,ppd是乙個陣列的名稱,因此ppd是陣列第乙個元素的位址
//第乙個元素又是指標,那麼ppa是乙個指標,指向time的指標。
const times **ppa = ppd;
auto arp = ppd; //c++11的寫法更簡潔
//*ppa 是乙個結構指標,ppa指向ppd第乙個元素,因此*ppa是第乙個元素,即&s1
//(*ppa)->year 是s1的成員year ,括號不能少,因為 ppa->year不是指標 不能*(ppa->year)
cout << "ppa = " << (*ppa)->year << endl;
cout << "arp = " << (*(arp+1))->year << endl;
return 0;
}
23.vector 堆分配空間,靈活但效率低。array 棧分配空間,固定長度,相比陣列安全高效。
vectora;
arraya;
24.陣列和指標關係緊密,如果ar是陣列名, ar[1] 等效 *(ar+1)
C 學習筆記4 C 之bool型別
c 中的bool型別 c 在c語言的基本型別系統上增加了bool型別 c 中的bool可取的值只有true與false 理論上bool值佔乙個位元組 如果多個bool值定義在一起,可能各佔乙個bit,這取決於編譯器的實現 true代表真值,編譯器內部用1來表示 false代表非真值,編譯器內部用0來...
C 學習筆記 4
17 函式呼叫方式 stdcall 表示指定這個函式採用 stdcall 方式。這種呼叫方式有如下特徵 1 呼叫時,引數從右到左壓入堆疊。2 被呼叫的函式負責清除堆疊。3 編譯時函式名前加 在函式名後加 paralength 其中 paralength 為所有引數以位元組為單位的長度。如果不指定函式...
c 學習筆記4
toc 主要內容為以下兩部分 1.布林資料型別 2.列表初始化 部分 這個資料型別在不同語言裡面的表現方式是不一樣的,尤其在c語言和c 裡布林資料型別表現方式有很大區別。布林表示式 布林表示式的本質是一段 其結果為 真 true 或者 假 false 我們可以通過關係運算得到布林值,關係運算 rel...