iT邦幫忙

DAY 16
3

程式隨手寫系列 第 16

閱讀code(2)

  • 分享至 

  • xImage
  •  

C數據結構
+++++++++++++++
67.根據底層的抽像數據類型理解顯式的數據結構操作.
68.C語言中, 一般使用內建的數組類型實現向量, 不再對底層實現進行抽象.
69.N個元素的數組可以被序列for (i=0; i
70.表達式sizeof(x)總會得到用memset或memcpy處理數組x(不是指針)所需的正確字節數.
71.區間一般用區間內的第一個元素和區間後的第一個元素來表示.
72.不對稱區間中元素的數目等於高位邊界與低位邊界的差.
73.當不對稱區間的高位邊界等於低位邊界時, 區間為空.
74.不對稱區間中的低位邊界代表區間的第一個元素; 高位邊界代表區間外的第一個元素.
75.結構的數組常常表示由記錄和字段組成的表.
76.指向結構的指針常常表示訪問底層記錄和字段的游標.
77.動態分配的矩陣一般存儲為指向數組列的指針或指向元素指針的指針; 這兩種類型都可以按照二維數組進行訪問.
78.以數組形式存儲的動態分配矩陣, 用自定義訪問函數定位它們的元素.
79.抽像數據類型為底層實現元素的使用(或誤用)方式提供一種信心的量度.
80.數組用從0開始的順序整數為鍵, 組織查找表.
81.數組經常用來對控制結構進行高效編碼, 簡化程序的邏輯.
82.通過在數組中每個位置存儲一個數據元素和一個函數指針(指向處理數據元素的函數), 可以將代碼與數據關聯起來.
83.數組可以通過存儲供程序內的抽像機(abstract machine)或虛擬機(virtual machine)使用的數據或代碼, 控製程序的運作.
84.可以將表達式sizeof(x) / sizeof(x[0])理解為數組x中元素的個數.
85.如果結構中含有指向結構自身|名為next的元素, 一般說來, 該結構定義的是單向鍊錶的結點.
86.指向鍊錶結點的持久性(如全局|靜態或在堆上分配)指針常常表示鍊錶的頭部.
87.包含指向自身的next和prev指針的結構可能是雙向鍊錶的結點.
88.理解複雜數據結構的指針操作可以將數據元素畫為方框|指針畫為箭頭.
89.遞歸數據結構經常用遞歸算法來處理.
90.重要的數據結構操作算法一般用函數參數或模板參數來參數化.
91.圖的結點常常順序地存儲在數組中, 鏈接到鍊錶中, 或通過圖的邊鏈接起來.
92.圖中的邊一般不是隱式地通過指針, 就是顯式地作為獨立的結構來表示.
93.圖的邊經常存儲為動態分配的數組或鍊錶, 在這兩種情況下, 邊都錨定在圖的結點上.
94.在無向圖中, 表達數據時應該將所有的結點看作是等同的, 類似地, 進行處理任務的代碼也不應該基於它們的方向來區分邊.
95.在非連通圖中, 執行遍歷代碼應該能夠接通孤立的子圖.
96.處理包含迴路的圖時, 遍歷代碼應該避免在處理圖的迴路進入循環.
97.複雜的圖結構中, 可能隱藏著其他類型的獨立結構.
+++++++++++++++++
高級控制流程
+++++++++++++++++
98.採用遞歸定義的算法和數據結構經常用遞歸的函數定義來實現.
99.推理遞歸函數時, 要從基準落伍測試開始, 並認證每次遞歸調用如何逐漸接近非遞歸基準範例代碼.
100.簡單的語言常常使用一系列遵循該語言語法結構的函數進行語法分析.
101.推理互遞歸函數時, 要基於底層概念的遞歸定義.
102.尾遞歸調用等同於一個回到函數開始處的循環.
103.將throws子句從方法的定義中移除, 然後運行Java編譯器對類的源代碼進行編譯, 就可以容易地找到那些可能隱式地生成異常的方法.
104.在多處理器計算機上運行的代碼常常圍繞進程或線程進行組織.
105.工作群並行模型用於在多個處理器間分配工作, 或者創建一個任務池, 然後將大量需要處理標準化的工作進行分配.
106.基於線程的管理者/工人並行模型一般將耗時的或阻塞的操作分配給工人子任務, 從而維護中心任務的響應性.
107.基於進程的管理者/工人並行模型一般用來重用現有的程序, 或用定義良好的接口組織和分離粗粒度的系統模塊.
108.基於流水線的並行處理中, 每個任務都接收到一些輸入, 對它們進行一些處理, 並將生成的輸出傳遞給下一個任務, 進行不同的處理.
109.競爭條件很難捉摸, 相關的代碼常常會將競爭條件擴散到多個函數或模塊; 因而, 很難隔離由於競爭條件導致的問題.
110.對於出現在信號處理器中的數據結構操作代碼和庫調用要保持高度警惕.
111.在閱讀包含宏的代碼時, 要注意, 宏既非函數, 也非語句.
112.do…while(0)塊中的宏等同於控制塊中的語句.
113.宏可以訪問在它的使用點可見的所有局部變量.
114.宏調用可改變參數的值
115.基於宏的標記拼接能夠創建新的標記符.


上一篇
小功能(12)
下一篇
閱讀code(3)
系列文
程式隨手寫20
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

我要留言

立即登入留言