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

Aar*_*ndt 12 c arrays size resize arraylist

我正在尝试一下gamestudio.我现在正在拍摄射击游戏.我有一个指针指向敌人的阵列.我想要.当敌人被杀时 将他从列表中删除.而且我也想创造新的敌人.

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

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

dan*_*n04 24

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

// 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);
Run Code Online (Sandbox Code Playgroud)

  • `x = realloc(x,...)`是一个等待发生的内存泄漏.(但是,我意识到演示如何处理动态分配失败并不是这个答案的重点.) (4认同)
  • 是的,我应该检查 `malloc` 是否也返回 `NULL`。 (2认同)
  • 答案已编辑(等待同行评审)以进行适当的错误检查,因为它已被用作重复标记的目标和约 24k 视图。 (2认同)

小智 3

C 中的数组一旦创建,就被设置。您需要一个动态数据结构,例如链接列表或数组列表