我需要确定一个由 4 个整数组成的全局结构(数组)。 问题是,事先不知道该结构数组的大小。
我正在尝试做某事。像这样:
typedef struct
{
int value;
int MAXleft;
int MAXright;
int MAX;
} strnum;
int main ()
{
int size;
scanf("%d", &size);
strnum numbers[size];
return 0;
}
我听说,可以通过指针来做到这一点,但我不知道该怎么做。
最佳答案
您可以像这样动态地为多个结构分配空间:
strnum *numbers = malloc( size * sizeof(strnum) );
然后您可以像使用任何常规数组一样使用它(主要是)。
使用 calloc
代替 malloc
可能更方便。它分配了一些 block 并用零填充它们。请注意,malloc
不会清除分配的内存。
strnum *numbers = calloc( size, sizeof(strnum) );
当您使用完内存后,不要忘记调用free( numbers )
,这会将分配的内存返回给内存管理器。
如果您在不再需要它时不释放
它并分配越来越多的内存,那么随着程序继续运行,程序的内存占用将无缘无故地增长。这称为内存泄漏,应该避免。它可能最终导致程序内存不足和不可预知的结果。
并且不要忘记包含一个带有内存分配函数原型(prototype)的 stdlib.h
头文件。
关于c - 在 C 中定义一个全局结构指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12952534/