程式設計好習慣3 確保陣列操作不越界

2021-06-09 21:21:08 字數 918 閱讀 7838

有三種常見的程式設計技巧確保函式的操作不超出陣列實參的邊界。

第一種方法:放置標記

在陣列本身放置乙個標記來檢測陣列的結束。c 風格字串就是採用這種方法的乙個例子,它是一種字元陣列,並且以空字元 null 作為結束的標記。處理 c風格字串的程式就是使用這個標記停止陣列元素的處理。

第二種方法: 使用標準庫規範

是傳遞指向陣列第乙個和最後乙個元素的下乙個位置的指標。這

種程式設計風格由標準庫所使用的技術啟發而得

使用這種方法重寫函式fun並呼叫該函式,如下所示:

void fun(const int *beg, const int *end)

}

int main()

; printvalues(j, j + 2);

return 0;

}

每次迴圈都使beg 指標指向下乙個元素,從而實現陣列的遍歷。當 beg 指標等於結束標記時,迴圈結束。結束標記就是傳遞給函式的第二個形參。呼叫這個版本的函式需要傳遞兩個指標:乙個指向要輸出的第乙個元素,另乙個則指向最後乙個元素的下乙個位置。只要正確計算指標,使它們標記一段有效的元素範圍,程式就會安全。

顯式傳遞表示陣列大小的形參  

第三種方法:

將第二個形參定義為表示陣列的大小

這種用法在 c 程式和標準化之前的 c++ 程式中十分普遍。用這種方法再次重寫函式 fun,新版本及其呼叫如下所示:

void fun(const int ia, size_t size)

}

int main()

;

fun(j, sizeof(j));

return 0;

}

程式設計好習慣

我們在編碼的時候總是希望能寫出風格良好,清晰 健壯的程式,把 當成一件藝術品來看待 來雕琢,讓 coding成為一種藝術。看了很多大牛關於程式設計風格與修養方面的文章,很受啟發,結合自己體會,簡錄幾條,提醒自己時刻注意。1.引數檢查 對於有引數的函式,首先要對引數的合法性進行檢查。可以利用asser...

程式設計好習慣

1.dry 不要重複你自己 don t repeat yourself dry是一條最容易理解但又是相對比較難以應用的原則。它是指當你在兩處或者更多的地方發現相似 時,我們應當把它們抽象成乙個新的函式,在之前重複的地方呼叫新的函式並帶上適當的引數。dry也許是最普遍的一條程式設計原則,我從未發現乙個...

C 程式設計好習慣

1.不要在建構函式中做初始化操作 要求類 尤其是對外介面類 提供init 函式,在該函式中進行相關初始化操作,初始化失敗能夠返回錯誤碼。可以規避問題 建構函式中難以返回錯誤碼,外部呼叫者無從判斷初始化結果。當該類作為全域性變數使用時,構造函式呼叫發生在main 函式執行之前,出現問題難以追蹤。2.所...