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];
}
Run Code Online (Sandbox Code Playgroud)
在这段代码中,我想声明一个新的二维数组,但我的编译器给我写了这个错误:
表达式必须具有常量值
谁知道我能做什么,因为编译器不允许我用 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);
Run Code Online (Sandbox Code Playgroud)
这就是我们过去动态分配二维数组的方式。
在现代标准 C 中使用动态分配的等效代码是:
char (*b)[n] = malloc( sizeof(char[m][n]));
...
b[i][j] = something;
...
free(b);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1757 次 |
| 最近记录: |