Visual Studio 2019编译器对语句int matrix[n][m]报错:表达式必须含有常量值
时间: 2023-10-07 18:09:54 浏览: 105
是的,C语言中,数组的大小必须是一个常量值,无法动态地使用变量作为数组的大小。这是因为在编译时,数组的大小需要在编译器确定。
如果你想要在运行时动态地创建一个二维数组,你可以使用动态内存分配函数`malloc()`来实现。下面是修改后的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, m;
printf("请输入n和m:");
scanf("%d %d", &n, &m);
int** matrix = (int**)malloc(n * sizeof(int*));
for (int i = 0; i < n; i++) {
matrix[i] = (int*)malloc(m * sizeof(int));
}
printf("请输入矩阵元素:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &matrix[i][j]);
}
}
int x, y;
printf("请输入x和y:");
scanf("%d %d", &x, &y);
printf("矩阵中对应位置的元素为:%d\n", matrix[x-1][y-1]);
// 释放内存
for (int i = 0; i < n; i++) {
free(matrix[i]);
}
free(matrix);
return 0;
}
```
使用动态内存分配函数`malloc()`来创建二维数组,并在程序结束后释放内存。这样就可以在运行时动态地创建一个n行m列的矩阵了。
阅读全文