我最近開始學習C++來改變我的職業生涯。使用結構創建數組
我理解了一些基本的指針邏輯,並且我想使用這個結構創建一個數組。
所以基本上,這裏是我寫到目前爲止代碼:
struct arr{
private:
int size;
int *elements;
public:
void createarray(int start, int end);
void printa();
};
void arr::createarray(int start, int end){
size=end-start;
for(int i=0;i<=size;i++){
*(elements+i)=start+i;
}
}
void arr::printa(){
for(int i=0;i<=size;i++){
cout << *(elements+i) << endl;
}
}
所以基本上,我的邏輯是: 如果我可以讓存儲在C++和隨機內存地址的指針變量執行增量指針算術,然後我可以基本上使用結構或類創建自己的數組符號。
但上面的代碼給了我一個錯誤。所以,我猜測這是因爲在c中對未初始化的指針執行算術是無效的。我對麼?還是有什麼我失蹤?
非常感謝。
你得到了什麼樣的錯誤? – pomtree
雖然很好的學習關於指針的知識,以及如何使用它們來創建動態「數組」,但一旦你學到了這一課,你就可以拋棄它,因爲每當你用C++編程時想到「動態數組」,你的下一個應該是[的std :: VECTOR'](http://en.cppreference.com/w/cpp/container/vector)。 –
這裏沒有創建動態數組。像'new int [size];'必須遲早要在那裏,這樣可以將for循環的條件限制嚴格限制爲小於size。正如現在寫的,這是* undefined behavior *的一個配方,假設'arr'的一個實例是真正創建的(沒有發佈的代碼也沒有)。最後,「用未初始化的指針執行算術...」做*任何*,無論是指針算術,還是簡單的評估,都有*不確定*變量內容構成*未定義行爲*的最基本形式。 – WhozCraig