我是一位Java程序員,在C++中處理我的第一個項目,我很努力地理解數組是如何處理的。我正在嘗試編寫一個與下面的代碼結構相同的程序。然而在我的實際項目中,class A
和struct B
在頭文件中聲明。我明白這一點的是,b.arr[2]
陳述將數組b.arr
初始化爲長度2.但是,當我按原樣運行以下代碼時,出現錯誤exited with non-zero status
。當我將b.arr [1]等於a2的行註釋掉時,它運行良好。爲什麼會這樣,我該怎麼做?另外,有沒有辦法可以將b.arr數組重新定義爲不同的長度?我環顧四周,但我找不到似乎解決這個具體問題。C++定義對象數組的元素
class A {};
struct B {
A *arr[];
};
int main() {
B b;
b.arr[2]; // instantiates array to be of length 2?
A a1;
A a2;
b.arr[0] = &a1;
b.arr[1] = &a2; // RUNS FINE WITHOUT THIS LINE
}
謝謝!
順便說一句,我正在寫一個arduino庫,所以我不能使用標準命名空間。
請閱讀[書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list),不要只是嘗試隨機的東西。在C++中有這種叫做未定義行爲的東西,如果你不小心,可能會導致快速啓動器跳過你的窗口 – user463035818
'b.arr [2]'是未定義的行爲。訪問尚未分配的數組的元素3。 –
如果你想創建一個可以在運行時設置或更改大小的動態數組,你應該使用['std :: vector'](http://en.cppreference.com/w/cpp/container/vector )。如果你想要一個大小固定的數組,我建議['std :: array'](http://en.cppreference.com/w/cpp/container/array)。 –