首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言數組拷貝循環下標錯誤:i 與 a 混用導致越界

     編輯:程式設計綜合問答

錯誤代碼

void copy_array(int source[], int output[]) {
    for (int a = 0; a < i; a++) {
        output[i] = source[i]; // 錯誤:用全局 i 而非循環變量 a
    }
}

現象

輸出陣列前 5 個元素正確 (恰好 `i=5`),後續元素為棧上殘留垃圾值。

修正

output[a] = source[a]; // 使用循環變量 a

教訓

  • 避免在函數內依賴全局變量 `i` 作為循環邊界與下標。
  • 編譯器 `-Wall` 會警告 `i` 在循環內未修改,但不報錯。
  • 單元測試覆蓋邊界可及早發現。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved