Han*_*zun 4 c arrays string pointers global
我需要识别一个全局结构(数组),由4个整数组成.问题是,该结构数组的大小事先是未知的.
我正试着做某事.像这样:
typedef struct
{
int value;
int MAXleft;
int MAXright;
int MAX;
} strnum;
int main ()
{
int size;
scanf("%d", &size);
strnum numbers[size];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我听说,有可能通过指针做到这一点,但我不知道该怎么办.
您可以动态分配多个结构的空间,如下所示:
strnum *numbers = malloc( size * sizeof(strnum) );
Run Code Online (Sandbox Code Playgroud)
然后你可以像任何常规数组(大多数)一样使用它.
使用它calloc代替可能更方便malloc.它分配了许多块并用零填充它们.请注意,这malloc不会清除已分配的内存.
strnum *numbers = calloc( size, sizeof(strnum) );
Run Code Online (Sandbox Code Playgroud)
完成内存后不要忘记调用free( numbers ),这会将分配的内存返回给内存管理器.
如果你free不再需要它并且分配越来越多,那么程序的内存占用将随着程序继续工作而无缘无故地增长.这称为内存泄漏,应该避免.它可能最终导致程序缺乏内存和不可预测的结果.
并且不要忘记包含stdlib.h带有内存分配函数原型的头文件.