簡體   English   中英

如何在C中更改數組的大小?

[英]How can I change the size of an array in C?

我正在嘗試使用游戲工作室。 我現在正在制作一款射擊游戲。 我有一個指向敵人的指針的數組。 我要。 當敵人被殺死時。 將他從名單中刪除。 而且我也希望能夠創造新的敵人。

Gamestudio 使用一種名為 lite-C 的腳本語言。 它具有與 C 相同的語法,並且在他們的網站上說,它可以使用任何 C 編譯器進行編譯。 它是純 C,沒有 C++ 或其他任何東西。

我是 C 新手。我通常用 .NET 語言和一些腳本語言編程,

你不能。 這通常是通過動態內存分配來完成的。

// Like "ENEMY enemies[100]", but from the heap
ENEMY* enemies = malloc(100 * sizeof(ENEMY));
if (!enemies) { error handling }

// You can index pointers just like arrays.
enemies[0] = CreateEnemy();

// Make the array bigger
ENEMY* more_enemies = realloc(enemies, 200 * sizeof(ENEMY));
if (!more_enemies) { error handling }
enemies = more_enemies;

// Clean up when you're done.
free(enemies);

一旦在 C 中創建了一個數組,它就會被設置。 您需要一個動態數據結構,如 Linked List 或 ArrayList

數組是靜態的,所以你不能改變它的大小。你需要創建鏈表數據結構。 該列表可以根據需要增長和縮小。

看看realloc ,它允許您調整給定指針(在 C 中,數組是指針)指向的內存的大小。

正如 NickTFried 所建議的,鏈接列表是一種方法。 另一個是有一個足夠大的桌子來容納你將擁有的最大數量的物品並管理它(哪些有效與否,列表中當前有多少敵人)。

至於調整大小,你必須使用指針而不是表格,你可以重新分配、復制等等......絕對不是你想在游戲中做的事情。

如果性能是一個問題(我猜是),那么正確分配的表可能就是我會使用的。

我想降低數組大小,但沒有像這樣工作:

myArray = new int[10];//Or so.

所以我嘗試創建一個新的,其大小基於保存的計數。

int count = 0;

for (int i = 0; i < sizeof(array1)/sizeof(array1[0]); i++){
  if (array1[i] > 0) count++;
}

int positives[count];

然后重新傳遞第一個數組中的元素以將它們添加到新數組中。

//Create the new array element reference.

int x = 0;

for (int i = 0; i < sizeof(array1)/sizeof(array1[0]); i++){
  if (array1[i] > 0){ positives[x] = array1[i]; x++; }
}

在這里,我們有一個全新的數組,其中包含我們想要的確切元素數量(在我的情況下)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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