確保函式的操作不超出陣列實參的邊界

2022-04-05 13:51:43 字數 292 閱讀 2942

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

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

第二種方法是傳遞指向陣列第乙個和最後乙個元素的下乙個位置的指標。這種程式設計風格由標準庫所使用的技術啟發而得, 在第二部分將會進一步介紹這種程式設計風格。

第三種方法是將第二個形參定義為表示陣列的大小,這種用法在 c 程式和標準化之前的 c++ 程式中十分普遍。

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

有三種常見的程式設計技巧確保函式的操作不超出陣列實參的邊界。第一種方法 放置標記 在陣列本身放置乙個標記來檢測陣列的結束。c 風格字串就是採用這種方法的乙個例子,它是一種字元陣列,並且以空字元 null 作為結束的標記。處理 c風格字串的程式就是使用這個標記停止陣列元素的處理。第二種方法 使用標準庫...

「陣列作為實參」的情況

陣列型別為const 指標,且附帶元素的型別和陣列長度資訊,僅當陣列元素的型別和陣列長度均相同時,兩個陣列型別才相同。比如,有 int a 16 b 15 a,b不是同乙個型別,因為陣列的長度不同。當實參為陣列型別時,比如有 int a 16 以a 作為實參,如果形參是非引用型別,比如 int pa...

函式的形參與實參(二維陣列)

int a 2 其中a 既不是 int 也不是 int 也不是 int 2 而是 int 型別。int 指指向指標的指標。int 2 指指向陣列的指標,數字2 代表了每行的步長。這個陣列中儲存的是原陣列每行的首元素的位址 我猜的 對於fun a 如果函式的形參為 fun int b 2 這是預設的。...