c - 在运行时设置数组大小

标签 c arrays gcc c99

我知道如何在函数内创建结构数组:

typedef struct item
{
    int test;
};

void func (void) 
{
    int arraysize = 5;
    item ar[arraysize];  
}

但是当全局声明数组时,我该如何做:

typedef struct item 
{
    int test; 
};

item ar[];

void func (void)
{
    int arraysize = 5;
    // What to here?
}

最佳答案

可变长度数组只允许在 C 中用于具有自动存储持续时间的数组。在文件范围内声明的数组具有静态存储持续时间,因此不能是可变长度数组。

您可以使用malloc 为编译时大小未知的数组对象动态分配内存。

关于c - 在运行时设置数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295786/

相关文章:

c - 如何初始化指向不同长度的字符数组的指针数组?

javascript - 如何在javascript中将两个相同长度的数组转换为一个对象数组?

Mac OS 10.6/Snow Leopard 上的 Python 构建问题

C++程序无法编译

c - 在 GCC 中对齐 malloc()?

c - 使用 realloc 强制重定位

c - 如何从csv文件中获取特定行?

Python 3.3 C-API 和 UTF-8 字符串

javascript - JS 在文件之间导入数组

c - 函数中的数组显示不正确