gpt4 book ai didi

c - 使用 c 中函数的 int 值定义 arraysize

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:00 25 4
gpt4 key购买 nike

我想让我的阵列更灵活。我的输入来自一个文件。我从一个函数中得到了我的数组需要多大的信息。

我的代码示例如下所示:

int albumsize = getAlbumnumberFromFile(inputFile);
struct Album Alben[albumsize];

现在我必须解决以下问题......我不能做这样的事情。我的 IDE (Visual Studio 2017) 说这个错误:

expression must have a constant value

谢谢亚历克斯

最佳答案

尽管 C 标准允许可变长度数组 (VLA),但 Visual Studio 编译器并不完全符合标准(相关 Q&A)。

但是,我不鼓励在这种情况下使用 VLA,即使它们受到支持,因为足够大的 albumsize 可能会导致未定义的行为。

更好的方法是动态分配内存,如下所示:

struct Album *Alben = malloc(albumsize * sizeof(*Alben));
... // Use the allocated memory here. Once you are done, free it.
free(Alben);

请注意,Alben-the-pointer 和 Alben-the-array 之间的一个重要区别是您从 sizeof 获得的内容:数组将报告其数据的大小,而指针将单独报告指针的大小。出于这个原因,您需要保留 albumsize 的值 - 例如,为了在循环中迭代数组。

关于c - 使用 c 中函数的 int 值定义 arraysize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55248856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com