簡體   English   中英

查找動態分配的數組的元素數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM