为什么我们使用指针而不是简单地创建特定大小的数组?

时间:2017-04-19 15:15:45

标签: c++ arrays pointers dynamic-memory-allocation

我是C ++的新手,对不起,如果以前曾经问过,但我找不到它。 为什么我们使用指针而不是简单地创建特定大小的数组?

  int** ary = new int*[rowCount];
   for(int i = 0; i < rowCount; ++i)
    ary[i] = new int[colCount];

int ary[rowCount][colCount]; 

两者之间的区别是什么? 我知道第一个在堆内存上工作,第二个在堆栈上工作,但为什么大多数人使用第一个方法?

1 个答案:

答案 0 :(得分:1)

一个区别是第二个只有在rowCount和colCount都为constant expressions时才会编译。另请参阅Array declaration

另一方面,即使这些变量在运行时发生变化,第一个也会编译。

顺便说一句,所有这些都与C类似。如果您使用的是C ++,最好使用std::vector作为第一个选项,std::array作为第二个选项。