我在c语言中使用const定义了一个变量n,但是在使用double(*A)[n] = new double[n][n]();语句定义矩阵时报错,C++ expression must have a constant valuethe value of variable (declared at line 12) cannot be used as a constant
时间: 2024-02-03 18:03:59 浏览: 137
关于const在C++中的用法
在C语言中,const定义的变量并不是常量,它们只是只读变量,也就是说不能通过赋值改变它们的值。在C++中,const定义的变量是常量,它们在编译时就已经确定了它们的值。
对于你的问题,C++要求定义数组时使用常量表达式作为数组的维度。因为n是一个const定义的只读变量,所以不能用它来定义数组的维度。解决方法是使用C++11标准引入的constexpr关键字来定义常量表达式。具体做法如下:
```c++
const int n = 3;
constexpr int N = n;
double(*A)[N] = new double[N][N]();
```
这里,将n赋值给N,并使用N来定义数组的维度。由于N是一个常量表达式,所以可以通过编译。
阅读全文