c - 在 C 中定义一个全局结构指针?

标签 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;
}

我听说,可以通过指针来做到这一点,但我不知道该怎么做。

最佳答案

您可以像这样动态地为多个结构分配空间:

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/

相关文章:

c - C 中的高阶函数

c - C 中的字符串中添加了不需要的字符

arrays - Excel VBA 对象变量未设置问题,可能不正确的 Redim 使用?

C++ 从矩阵中获取列 vector

c++ - ATL 如何将 BSTR* str 转换为注册表项。SetValue(LPCTSTR str 类型

c# - 在 C# 项目中将 C# 字符串转换为 MFC CString?

string - 如何在 Haskell 中通过列表理解正确生成字符串列表?

c++ - 如果我除以 1,隐式类型转换不会发生吗?

c - fgetc 给我垃圾

c - 如何在c中将csv文件读入结构链表