C C 基礎學習筆記

2021-06-27 18:21:15 字數 3008 閱讀 3004

1.計算機記憶體分為乙個個的儲存單元,即乙個位元組(8bit二進位制),整數要儲存符號位,實數要儲存符號位、小數點1       32位字長計算機

3.a-z  65-90  a-z  97-122  ascii

4.一般不比較浮點數數值的相等和不相等性

指向二維陣列的指標變數int (*pf[2])[3]  分別有兩個pf[0]、pf[1]是指向長度為3的陣列的指標變數

6.動態分配記憶體:初始化、判斷是否因為記憶體緊張而申請失敗if(p1!=null) cout<<*p1;

7.字元陣列初始化可以這樣寫:

char a[8],*p;

p1 = a;

cin>>p1;//整體輸入

cout《條件編譯:選擇某一部分編譯

13.printf("%-015.5d",a);

scanf("%*5d",&a);

fflush(stdin); :防止多餘是資料影響後面的輸入

14.問題規模:1  -   n,空間1  -  s(n)  時間1  -   t(n)    空間單位:變數和構造變數   時間單位:程式步

程式步: 表示式與函式、表示式與變數、函式的形參、函式的區域性變數

t(n)有個上限,o(f(n)),加法(並列),乘法(巢狀)   s(n) = o(f(n))輔助的空間:如排序時移動資料所需的臨時工作單元、遞迴工作棧

c++1.類、物件、抽象、封裝、繼承、多型

2. 類的所有物件的函式成員在同一共用區

拷貝建構函式:cpoint(cpoint& p);

深淺複製:變數成員是否共用同一記憶體區  深複製:不共用  cpoint(const cpoint& p);

3.靜態成員訪問:

classb::f();

cb1.f();

4.建構函式必須使用初始化列表來初始化常變數成員

常物件只能呼叫公有的常函式成員

5.友員函式(普通函式或另乙個類的函式):通過物件訪問

6.cstudent stu1("張巨集","20082200",c);    復合類

呼叫ccourse拷貝建構函式

呼叫ccourse建構函式2

呼叫cstudent建構函式2

析構則對稱

7.string.find string.substr   cin>>str;遇到空白字元結束    getline(cin,s1,'*');可輸入空白字元

8.public繼承:

基類的public protected保持不變

派生類的成員函式可訪問基類的public protected

派生類的物件可訪問基類的public

protected繼承:

基類的public protected變為protected

派生類的成員函式可訪問基類的public protected

派生類的物件可訪問基類的null

private繼承(預設)

基類的public protected變為private     通過a::x1    a::g  來恢復

派生類的成員函式可訪問基類的public protected

派生類的物件可訪問基類的null

9.派生類建構函式定義時要顯示呼叫基類的建構函式

派生類重新命名或重定義基類的成員函式時遮蔽     通過cpoint::move(2,3)恢復

10.復合類與繼承

建構函式:基類的順序、內嵌物件的宣告順序

11.重複繼承有二義性及重複儲存問題,應該用虛基類class a1:virtual public d{}

最遠派生類

12.多型:

靜態:函式過載

動態:虛函式和動態指標(基類指標)

抽象類和純虛函式和動態指標(基類指標)

13.函式模版只會為每乙個型別提供乙個模版函式   例項化

類模版:資料成員、函式引數、函式的返回值  類模版可以繼承

14.順序容器:vector、list、deque

關聯容器:stack、queue、set、map

vector

*(v.end() - 1)     最後乙個元素

*(v.rend() - 1)    第乙個元素

input iterator唯讀  output iterator 只寫  forward iterator向前讀寫  bidirectional iterator向前向後讀寫   random access iterator隨機讀寫 

iterator(向前讀寫)   reverse_iterator (向後讀寫)  const_iterator(向前讀)   const_reverse_iterator(向後讀)  

15.命名空間:

#include //不加  .h

using namespace std;

16.執行異常:陣列下標溢位、記憶體不足、除數為零

f1()收到f2()發來的異常,沒找到就傳遞給f1()的呼叫者

發現一條異常時則忽略後面的異常

建立物件時建構函式的異常

17.為解決輸入輸出裝置與系統速度不匹配的問題,要設立乙個記憶體的緩衝區

流:位元組組成的資料

cout.width(10);   需要在每次要設定寬度時呼叫

操縱運算元:   #include帶引數的操縱運算元

if(!infile.eof())  infile.getline(c,sizeof(c));                infile.get(ch);       outfile.put(ch[i]);

二進位制檔案:記憶體的實際位元組

inbin.read(data[i],str_len);                             outbin.write(data[i],str_len);

讀寫指標 :seekg、tellg  讀指標   seekp、tellp   寫指標

istrstream str(b);   字元流

str>>x1;

str>>x2;

19.運算子過載:

成員函式:=、、++

友員函式:<<、>>、+、-

C C 之基礎學習筆記

1.空類 建構函式 成員函式都是不占用空間的,都是乙個size為1,作為類的佔位符,如何區分類 2.如果乙個類含有虛函式,那麼他的size將會是8 x64位 2.1 virtual大小是否與系統平台相關?x64和x86 2.2 vptr和vtable的原理和資料結構如何?3.建構函式的順序 先基類的...

C C 學習筆記 基礎知識3

1 和 和 有什麼區別 1 和 對運算元進行求值運算,和 只是判斷邏輯關係。2 和 在在判斷左側運算元就能確定結果的情況下就不再對右側運算元求值。注意 在程式設計的時候有些時候將 或 替換成 或 沒有出錯,但是其邏輯是錯誤的,可能會導致不可預想的後果 比如當兩個運算元乙個是 1 另乙個是 2 時 2...

C C 學習筆記 基礎知識6

1複雜表示式與序列點 序列點是乙個時間點 在整個表示式全部計算完畢之後或在 或逗號運算子處,或在函式呼叫之前 此刻塵埃落定,所有的 都已確保結束.ansi iso c 標準這樣描述 在上乙個和下乙個序列點之間,乙個物件所儲存的值至多只能被表示式的計算修改一次。而且前乙個值只能用於決定將要儲存的值。i...