程式設計總結1

2021-08-28 09:48:52 字數 1667 閱讀 8899

從事c++開發工作已有三四年之久,之前一直都是埋頭專心幹活。三年前的狀態幾乎是待在公司的實驗室裡有種兩耳不聞窗外事,一心只繫正在研發的系統。現在慢慢的空閒下來了,就趁著空閒的時間,把以前的遇到的問題好好整理進行反思反思。同時在反思的過程中也研究研究最近流行的新技術。以下幾點是我在開發過程中的幾點總結(還不全面),總結得不對的地方也希望大家能指出。

以下是我在開發程式設計過程中的幾點總結:

1.程式設計時盡量用指標

2.少用動態分配(new或malloc),如果用到的話要到最後用完了才釋放

3.避免在迴圈中開啟執行緒

4.盡量避免執行緒的巢狀使用

5.檢查**的時候要看清楚上下文之間資料的聯絡與變化

6.寫**的風格要保持一致

7.寫**的時候對自己的要求要高一些

8.要慎用二級指標(即指標的指標),及其容易造成記憶體的洩漏,而且無法確實的控制。當二維陣列的列數不確定的時候才建議使用二級指標,如果二級指標需要傳參,最好是將其轉換成一級指標傳出。

9.浮點數的比較不能直接等於進行比較,因為浮點數沒有0, 要判斷乙個浮點數是否等於0 ,可以進行一下操作

float a=0.0;

if ((a-(1/(10e+10)<0)   //判斷 a 是否等於0

10.解決網路大小端呼叫的函式:

hotns()——"host to network short",主機位元組順序轉換為網路位元組順序(對無符號短型進行操作 4bytes)

htonl()——"host to network long",主機位元組順序轉換為網路位元組順序(對無符號長型進行操作 8bytes)

ntons()——"network to host short",網路位元組序轉換為主機位元組順序(對無符號短型進行操作 4bytes)

ntohl()——"network to host long",網路位元組順序轉換為主機位元組順序(對無符號長型進行操作 8bytes)

12. 遇到double free 的問題時首先要先自己認真檢查, 不能急躁 。有懷疑精神是好的,但前提是你得先證明清楚才能下結論。

13.socket 通訊要認真閱讀每個函式的返回值說明,不能只想不動去驗證。

14.tcp/ip 和udp/ip的區別使用前好好想想,再決定是用哪個,tcp 的recv()函式如果要接收指定大小的,則可將引數flag的值設定為 msg_waitall。

15. socket 通訊 send () 和recv () 函式返回的都是真正傳送或接收到的資料的大小,可以通過該返回值對程式進行控制。

16. 當除錯**無法接著進行下去時,不妨停下來看看書,然後再去除錯。切記不要在腦子不清晰的時候去除錯**,那樣是在浪費時間,不但效率低,而且也會把整個人的情緒弄得很糟。

17.#define 和 const 常量不是同一回事, #define是替換,而c++常量不是

const:有資料型別,編譯進行安全檢查,可除錯 

define:巨集,不考慮資料型別,沒有安檢,不能除錯 

18.盡量到官網查詢api等資料

19.優化**,減少重複計算,減少陣列下標操作,盡量用指標進行。

20.指標轉換 例子: int * i 轉換成 void * a = (void *) i;  int *i 轉換成 void ** b = (void **)&i 

程式設計總結1

7 1 列印沙漏 20 分 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個 要求按下列格式列印 所謂 沙漏形狀 是指每行輸出奇數個符號 各行符號中心對齊 相鄰兩行符號數差2 符號數先從大到小順序遞減到1,再從小到大順序遞增 首尾符號數相等。給定任意n個符號,不一定能正好組成乙個沙漏。...

程式設計總結(1)

本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個 要求按下列格式列印 所謂 沙漏形狀 是指每行輸出奇數個符號 各行符號中心對齊 相鄰兩行符號數差2 符號數先從大到小順序遞減到1,再從小到大順序遞 增 首尾符號數相等。給定任意n個符號,不一定能正好組成乙個沙漏。要求列印出的沙漏能用掉盡可...

socket程式設計總結 1

使用socket寫 主要是要看自己的需求是什麼。如果通訊時,內容很重要就要使tcp方式。如果使用者數太多,可能就要使用udp方式了。在tcp模式下,最簡單的方式就是這樣的,使阻塞方式 服務端 1.初始化socket環境,建立socket 2.梆定乙個埠 3.開始監聽 4.接收客戶端 5.接收到客戶端...