1.strcpy()是碰到\0就會停止拷貝的,最好使用memcpy和strncpy代替。
2.memset並不分配記憶體,malloc才分配。
3.迴圈裡面要注意出錯的地方sleep
4.匈牙利命名法
5.臨時變數也要有意義
6.控制代碼要注意釋放,特別是在出錯的地方
7.memset不能過於頻繁
8.物件的方法在前面,特別是public方法
9.使用extern c編譯c++程式時,不能包含過載函式。因為c編譯時函式名要唯一確定。
10.如果類的成員函式要呼叫全域性函式,應加上::標誌
11.不能在類中初始化常量,因為類的物件未被建立,編譯器不知道size的值是什麼。
class a
在類中建立常量的方法——使用列舉常量
class a
;int array[size1];
}列舉常量不會占用物件空間,他在編譯時被全部求值。列舉常量的缺點是:隱含型別是整數,最大值有限,且不能表示浮點數。
12.記憶體錯誤使用——釋放了記憶體卻繼續使用它
有三種情況:
a. 物件呼叫關係過於複雜,難以搞清某個物件是否已經釋放
b. return語句寫錯了,不能反悔指令「棧記憶體」的「指標」或「引用」,因為該內存在函式體結束時自動銷毀
c. free或delete之後,沒有將指標設定為null,導致產生「野指標」
13.字元陣列和字元指標
char a = "hello";
char *p = a;
//a的位址付給p,這樣修改p就是修改a
sizeof(a);
//結果:6,陣列的大小
strlen(a);
//結果:5,字串長度
sizeof(p);
//結果:4,指標大小
注意:陣列作為引數傳遞時自動退化為同型別的指標。
void func(char a[100])
14.指標的特性
(1)指標消亡了,並不表示它所指的記憶體會被自動釋放
(2)記憶體被釋放了,並不表示指標會消亡或者成了null指標
15.「野指標」的成因
(1)指標變數沒有被初始化,任何指標變數被建立時不會自動成為null指標,它的預設值是隨機的
會亂指一氣。所以要麼初始化,要麼指向null。
(2)free後沒有置為null
(3)指標操作超越了變數的作用範圍
16.exit和return
17.不要輕視拷貝建構函式與賦值函式
(1) 如果不主動編寫建構函式和賦值函式,編譯器將以「位拷貝」的方式自動生成預設的函式。倘若類中含有指標變數,那麼這兩個預設函式就隱含了錯誤。
如類string的兩個物件a,b為例,假設a.m_data為「hello」,b.m_data為「world」。執行b.m_data=a.m_data將造成三個錯誤:1.b.m_data原有的記憶體沒有被釋放,造成記憶體洩露;2.b.m_data和a.m_data指向同一塊記憶體;2.物件被析構時,m_data被釋放了兩次。
(2)拷貝建構函式和賦值函式,拷貝建構函式是在物件被建立時呼叫的,賦值函式只能被已經存在的物件呼叫。
string c = a;
//呼叫了拷貝建構函式,最好寫成才c(a)
c = b;
//呼叫了賦值函式
note:引用不可能為空,而「指標」可以為null
(3)如果不想寫拷貝和賦值函式,就宣告為私有方法:
class a
18.派生類
(1)派生類的建構函式應在其初始化表裡呼叫基類的建構函式
(2)基類與派生類的析構函式應該為虛函式,這樣多型才有意義
(3)在編寫派生類的賦值函式時,不要忘記對基類函式的資料成員重新賦值
derived & derived::operator = (const derived &other)
19.繼承
繼承規則:若在邏輯上b是a的「一種」,並且a的所有功能和屬性對b而言都有意義,則允許b繼承a的功能和屬性。
C語言程式設計注意點
1 scanf d input scanf要用位址符 字串除外 scanf s input 因為字串名字即為字串首位址 scanf s input 遇到空格即結束,gets input 遇到空格不結束,遇到回車結束 scanf s input 如果input是char 一定要先用malloc開闢空間...
C語言程式設計注意點3
1 將複雜問題分解為簡單問題的程式設計方法稱為結構化程式設計,其特點為自頂向下 逐步細化 模組化 2 定義常量的方法 define 和const define pi 3.1415926 無分號,無常量型別 const float pi 3.14159 3 函式定義 原型 在ansi c標準中,所有函...
asp程式設計注意點
一 asp中,如果在檔案頭加入 option explicit 則表示該程式中的所有變數都必須 先定義,即dim varia,然後才能使用。今天在用aspjpeg 2.0做後台壓縮,結果執行到set jpeg server.createobject persits.jpeg 時,無論如何都不行。解決...