在C中定义全局结构指针?

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)

我听说,有可能通过指针做到这一点,但我不知道该怎么办.

Mak*_*zin 5

您可以动态分配多个结构的空间,如下所示:

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带有内存分配函数原型的头文件.