[英]Finding number of elements of a dynamically allocated array
我有一個名為Deck的動態分配數組,由Card對象組成,它有兩個值,suit和number。
我需要從我的deck數組中找到卡片的數量,我聲明如下:
deck = new Card[52];
如果我改變卡座陣列中的牌數,我不知道如何確定牌組中的元素數量。 現在我有:
int size=0;
Card a;
while (a.getNumber() != '/0'){
size++;
a = deck[size];
}
其中getNumber()是一個拉取卡片數值的函數。 但是當我運行程序時說“程序已經停止工作”
這在C ++或C中是不可能的。您需要創建一個結構:
struct Deck { int nCards; Card *cards; }
或者,更好的方法是使用std::vector<Card>
,它已經為你做了。 如果你真的不想要一個結構,並且由於某種原因不想使用向量,請分配一個虛擬卡指針並將其設置為null以標記數組的結尾:
deck = new Card[52+1];
deck[52] = 0;
while (deck[i]) { /* ... */ }
您可能必須將該數字與數組分開存儲,執行類似C字符串的操作並使用sentinel值來指示數組的結尾,或者您實際上可以使用C ++編程並使用可以增長和縮小的向量。
當你說程序說“程序已停止工作”時,我不明白你的意思。 我假設它是某種自定義異常消息。
但是,我看到你的代碼中有一個緩沖區溢出(數組索引超出邊界異常)的可能性。如果數組中的所有52個槽都被占用,那么在第52次迭代中,size變量的值變為52,導致到甲板陣列中的非法索引訪問(它已經預先分配了一組52個插槽)。
此外,這肯定不是動態分配的數組,因為您在初始化步驟中正確設置其大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.