如何在C中更改数组的大小?

我正在尝试一下gamestudio。 我正在制作射击游戏。 我有一个指针指向敌人的arrays。 我想要。 到敌人被杀时 将他从列表中删除。 而且我也想创造新的敌人。

Gamestudio使用名为lite-C的脚本语言。 它具有与C相同的语法,并且在他们说的网站上,它可以使用任何C编译器进行编译。 它是纯C,没有C ++或其他任何东西。

我是C的新手。我通常使用.NET语言和一些脚本语言编程,

一旦创建了C中的数组,就会设置它。 您需要动态数据结构,如Linked List或ArrayList

你不能。 这通常通过动态内存分配来完成。

// 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); 

数组是静态的,因此您无法更改它的大小。您需要创建链表数据结构。 该列表可以根据需求增长和缩小。

看一下realloc ,它将允许你调整给定指针指向的内存(在C中,数组是指针)。

正如NickTFried所说,Linked List是一种可行的方式。 另一个是拥有一张足够大的桌子来容纳你所拥有的最大数量的物品并管理它们(哪些是有效的或无效的,目前列表中有多少敌人)。

resize时,你必须使用指针代替表格,你可以重新分配,复制等等……绝对不是你想要在游戏中做的事情。

如果性能是一个问题(我猜它是),正确分配的表可能是我会使用的。