gpt4 book ai didi

c - 将变量传递给数组维度错误

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

我在我的程序中使用了 int 类型的 lenAlenB。当我将此变量传递给 consensus_a[]consensus_b[] 时,显示此错误:

expression must have a constant value.

我如何将这些变量(lenAlenB)传递给 char consensus_a[]consensus_b[].

我的程序的一小部分:

    int lenA=10, lenB=15;
char consensus_a[lenA],consensus_b[lenB];

最佳答案

您可能正在运行不符合 C99 的编译器(可能是因为它比 C99 更旧)(如前所述,代码应使用符合 C99 的编译器进行编译)。

使用这些编译器,对于形式中的数组

char a[x];

x 需要保持不变。

您可以使用const:

const int lenA=10, lenB=15;
char consensus_a[lenA],consensus_b[lenB];

枚举:

enum
{
lenA = 10,
lenB = 15
};
char consensus_a[lenA], consensus_b[lenB];

#define:

#define lenA 10
#define lenB 15
char consensus_a[lenA], consensus_b[lenB];

malloc(如果您不希望它们保持不变):

char *consensus_a = malloc(lenA),
*consensus_b = malloc(lenB);

技术上应该是:

char *consensus_a = malloc(lenA*sizeof(char)),
*consensus_b = malloc(lenB*sizeof(char));

但是 sizeof(char) 是 1,所以不需要包括这个词。

在使用 malloc 时,请记住在使用后也释放它们:

free(consensus_a);
free(consensus_b);

关于c - 将变量传递给数组维度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15188426/

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