为什么我们使用指针而不是简单地创建一个特定大小的数组? 我是C++新手,如果以前被问过,我很抱歉,但是我找不到。 为什么我们使用指针而不是简单地创建一个特定大小的数组 int** ary = new int*[rowCount]; for(int i = 0; i < rowCount; ++i) ary[i] = new int[colCount];

为什么我们使用指针而不是简单地创建一个特定大小的数组? 我是C++新手,如果以前被问过,我很抱歉,但是我找不到。 为什么我们使用指针而不是简单地创建一个特定大小的数组 int** ary = new int*[rowCount]; for(int i = 0; i < rowCount; ++i) ary[i] = new int[colCount];,c++,arrays,pointers,dynamic-memory-allocation,C++,Arrays,Pointers,Dynamic Memory Allocation,这两者有什么区别? 我知道第一个方法适用于堆内存,第二个方法适用于堆栈,但为什么大多数人使用第一个方法呢?一个区别是,第二个方法只有在rowCount和colCount都为空时才会编译。另见 另一方面,即使这些变量在运行时发生变化,第一个变量也会编译 顺便说一下,所有这些都与C相似,如果你使用C++,你最好使用 STD::向量< />代码>第一个选项和 STD::数组< /代码>第二个。语言的效率/能力允许你使用内存位置而不是巨大的数据对象……因为你是C++新手,你肯定会发现更多关于PROs(和

这两者有什么区别?
我知道第一个方法适用于堆内存,第二个方法适用于堆栈,但为什么大多数人使用第一个方法呢?

一个区别是,第二个方法只有在rowCount和colCount都为空时才会编译。另见

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


顺便说一下,所有这些都与C相似,如果你使用C++,你最好使用<代码> STD::向量< />代码>第一个选项和<代码> STD::数组< /代码>第二个。

语言的效率/能力允许你使用内存位置而不是巨大的数据对象……因为你是C++新手,你肯定会发现更多关于PROs(和陷阱)的信息。通过分配的内存引用事物……想象一下。你要把一堆积木放在桌子上。。桌子上有一堆垃圾。你愿意:1)把所有的积木都粘在一起,然后把桌子上的所有东西都放在一起,这样才能放得下。。。。或者2)将积木放在桌子上合适的位置,然后记住积木所在的位置。在这两种情况下,您对任何一个块都一无所知,但您知道它们都在哪里。处理东西时的一个问题是,在处理完块后,在这两种情况下,您都希望记住删除所有块。这两个代码段之间的主要区别是堆栈与堆分配。第一个将从堆中分配,而第二个将在堆栈中。第一种方法要求您使用显式的
delete
语句手动释放内存,而第二种方法将在离开当前作用域时自动释放。每一个都适合于不同的场景,所以这取决于你想要做的事情。这些概念是初学者C++程序员在学习他们的最初课程、通过书籍演示等时所学到的。
int ary[rowCount][colCount];