#define max 40
...
void transpose(int matrix[][max], int* row, int* col)
{
int data[*row][max]; //expression must have a constant value
for (int i = 0; i < *row; i++)
{
for (int j = 0; j < *col; j++)
{
data[i][j] = matrix[i][j];
}
}
...
我尝试在int之前放置'const',但它仍在[* row]处显示此错误,为什么会发生此错误以及如何解决它?
此:
int data[*row][max];
这是错误的,因为第一个索引必须是常量值,而不是指针:
int data[row][max];
您在代码段中使用的唯一编译时常量是max
。您可能不使用运行时常量来声明数组。可变长度数组不是标准的C ++功能。
您必须像这样动态分配数组
int ( *data )[max] = new int[*row][max];
当然,当不再需要该阵列时,您将需要释放分配的内存。