第一章 學海無涯 程式設計技巧

2021-08-29 22:37:33 字數 982 閱讀 1914

void print(string str)point;     //這個定義是不好的(所佔位元組12位)

typedef struct point;     //這個好的定義(所佔位元組是8位)

typedef struct point;     //這個所佔位元組也是8位

至於為什麼會出現這個情況,可以去多多了解一下結構體的位元組對齊的規則就可以了,但是定義結構體要執行上述那個原則.

當然最好的定義方法就是直接都定義32位以上的,如下的辦法

typedef struct

而是應該使用以下的方法去編寫程式

x +=2*buffer[index])

index ++;

if(x>10){}

這樣寫有2個好處,首先,它放置斷點和除錯**的時候很方便.第二,奔騰處理器傳送簡單的指令,這樣將使處理器使用更多的執行單元,並且可以執行更多的**,複雜的**在這方面表現的很糟糕.

如果你在做關於2的乘法或者除法的時候,應該避免這麼去做,比如x*8,x*1024,x/16之類的,更加好的做法就是x<<3,x<<10,x>>4,還有其他可以通過位操作可以替代的方法,把這種寫法養成習慣.

沒有任何一種組合語言可以是複雜度位o(n2),更好的做法是使用清楚,高效率的演算法,而不是使用蠻力和列舉去解決問題.

不要為簡單的物件定義太多複雜的資料結構.雜湊表,鍊錶這些資料結構,雖然很好用,但是這個不意味著遇到所有的需求的時候都適用,有可能使用陣列會表現的更好(偏向查詢,修改).只不過有些語言是沒有辦法的,比如lua只有乙個table這種資料結構(底層是雜湊表),所以當你在使用c,c++開發的時候還是很有必要去考慮這個問題,到底使用什麼結構最合適.

當你發現之前搭的框架或者介面等等,用著很難受時,這個時候不應該考慮去修補它,而是應該考慮重構**,重新考慮設計思路,既然前面的**確實沒有通用性,健壯性,效能等等優點時,立馬收手,冷靜思考一下**應該這麼去設計,不要把自己做成乙個碼農,作為程式設計師應該像藝術家一樣去設計**,**隨著時間的推移應該是不斷的增值的.

《Windows遊戲程式設計大師技巧》一 學海無涯

偶然發現了本很棒的遊戲程式設計入門書 windows遊戲程式設計大師技巧 說是大師技巧,其實還是很深入淺出的。它涵蓋了windows圖形程式設計的方方面面,從win32的helloworld程式,到gdi簡介,再到directx的api。很適合我 這種windows程式設計的菜鳥,所以很喜歡這本書的...

《Windows遊戲程式設計大師技巧》一 學海無涯

偶然發現了本很棒的遊戲程式設計入門書 windows遊戲程式設計大師技巧 說是大師技巧,其實還是很深入淺出的。它涵蓋了windows圖形程式設計的方方面面,從win32的helloworld程式,到gdi簡介,再到directx的api。很適合我 這種windows程式設計的菜鳥,所以很喜歡這本書的...

程式設計珠璣第一章

原文中的問題 如何在1mb的空間裡面對一千萬個整數進行排序?並且每個數都小於1千萬。實際上這個需要1.25mb的記憶體空間。1mb總共有838,8608。所以估計也可以在1mb左右的空間裡面進行排序了。include include define bitsperword 32 define shif...