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

C++ 矩陣加法函數返回局部數組導致輸出錯誤

     編輯:程式設計疑難解答

問題代碼

int sum(int a[5][5], int b[5][5]) {
    int c[5][5]; // 局部數組
    // 計算...
    return c[i][j]; // 返回單個 int,且 c 已銷毀
}

錯誤分析

  • 函數返回類型為 int,但意圖返回二維數組。
  • c 為局部變量,函數結束時棧內存釋放,返回指針/引用均為野指針。
  • 主函數 d[i][j] = sum(g,h); 語法錯誤,i,j 循環變量已出作用域。

修正方案

  1. 主函數分配結果數組,傳入函數填充:
void sum(int a[5][5], int b[5][5], int c[5][5]) {
    for(int i=0;i<5;i++)
        for(int j=0;j<5;j++)
            c[i][j] = a[i][j] + b[i][j];
}
// 調用
int d[5][5];
sum(g, h, d);
  1. 或動態分配並返回指針(需調用者釋放)。
  2. 或使用 std::array/std::vector 現代 C++ 容器。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved