我是C ++的新手,对不起,如果以前曾经问过,但我找不到它。 为什么我们使用指针而不是简单地创建特定大小的数组?
int** ary = new int*[rowCount];
for(int i = 0; i < rowCount; ++i)
ary[i] = new int[colCount];
和
int ary[rowCount][colCount];
两者之间的区别是什么? 我知道第一个在堆内存上工作,第二个在堆栈上工作,但为什么大多数人使用第一个方法?
答案 0 :(得分:1)
一个区别是第二个只有在rowCount和colCount都为constant expressions时才会编译。另请参阅Array declaration。
另一方面,即使这些变量在运行时发生变化,第一个也会编译。
顺便说一句,所有这些都与C类似。如果您使用的是C ++,最好使用std::vector
作为第一个选项,std::array
作为第二个选项。