這個問題在這里已經有了答案: 越界訪問陣列不會出錯,為什么? (18 個回答) 8 小時前關閉。
我是 C 新手,我讀過陣列是固定大小的。所以我對以下內容感到困惑。
int a[] = {0};
a[1] = 1;
a[2] = 2;
a[3] = 3;
//.....
陣列可以像這樣在回圈中多次填充。那么它是如何固定大小的呢?
編輯:從評論中了解到這是未定義的行為。它的大小是固定的,但即使超出限制并且編譯了程式,編譯器也不會拋出錯誤(這讓我感到困惑)。
uj5u.com熱心網友回復:
您示例中的陣列具有固定大小(1 個元素),但在通過下標分配新資料時它不執行邊界檢查,因此您在這里所做的是將值分配給您的陣列不擁有的記憶體,這是未定義的行為.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/486136.html
標籤:C
上一篇:只有一個引數的模板特化
