void main() {
int a[M][N], b[N]; // 錯誤:b 定義為 N
china(a, b);
orange(a, b);
}
void china(int a[][N], int b[M]) { // 形參期望 b[M]
for (i=0; i=N 時寫入越界,覆蓋 a[0][0]
}
}
b 實參大小為 N(4),形參期望 M(5)。循環寫入 b[4] 時超出分配空間,因棧上 b 緊鄰 a,導致覆蓋 a[0][0],使其值變大(>100)。
將主函數中 b 定義改為 int b[M];,保證實參與形參大小一致,消除越界寫入。