gpt4 book ai didi

c - C 中表达式必须具有常量值

转载 作者:行者123 更新时间:2023-12-02 02:51:24 32 4
gpt4 key购买 nike

int LCS_length(char* x, char* y)
{
int m = strlen(x);
int n = strlen(y);

char b[m + 1][n + 1];
char c[m + 1][n + 1];
}

在这段代码中,我想声明一个新的二维数组,但我的编译器给我写了这个错误:

表达式必须具有常量值

谁知道我能做什么,因为编译器不允许我用 C 语言执行此语句?

注意:它只是代码的一部分,后面有 return 语句。

最佳答案

您必须使用标准 C 编译器来编译代码,例如 gcc 或 clang 等。您不能使用 C++ 编译器或非 C 编译器(例如 Microsoft VS)进行编译。

除此之外,除了缺少 return 语句之外,代码都很好。

如果您坚持使用旧的垃圾编译器,您也可以选择旧式的“mangled array”:

size_t m = strlen(something) + 1;
size_t n = strlen(something) + 1;
...
char* b = malloc(m*n);
...
b[i*n + j] = something;
...
free(b);

这就是我们过去动态分配二维数组的方式。

在现代标准 C 中使用动态分配的等效代码是:

char (*b)[n] = malloc( sizeof(char[m][n]));
...
b[i][j] = something;
...
free(b);

关于c - C 中表达式必须具有常量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61913456/

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