为什么我们使用指针而不是简单地创建特定尺寸的数组
Why do we use pointers instead of simply creating an array of specific size?
我是C 的新手,对不起,如果以前问过,但我找不到它。为什么我们要使用指针而不是简单地创建特定尺寸的数组?
int** ary = new int*[rowCount];
for(int i = 0; i < rowCount; ++i)
ary[i] = new int[colCount];
和
int ary[rowCount][colCount];
两者有什么区别?我知道第一个是在堆内记忆的作品,第二个在堆栈上工作,但是为什么大多数人使用第一方法?
一个区别是,仅当rowcount和colcount都是常数表达式时,第二个区别才会编译。另请参见数组声明。
另一方面,即使这些变量在运行时发生了变化,第一个也会编译。
顺便说一句,所有这些都类似于C。如果您使用的是C ,则最好使用std::vector
作为第一个选项,第二个选项为std::array
。
相关文章:
- 在将 new 与指针一起使用时,创建数组的指定长度
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 合并排序不排序自创建数组类 c++
- 基于参数创建数组
- 使用new创建数组而不声明大小
- c++用输入数据创建数组
- 从类 c++ 动态创建数组
- 如何使用 void 函数从类创建数组
- 未知大小的数组作为类成员,用于在运行时(对象创建时间)创建数组的对象
- 如何在不知道Arduino中知道其大小的情况下创建数组和存储值
- 使用动态分配创建数组并将元素插入其中
- 是否可以使用C 函数中的const int参数创建数组
- 如何在C++函数中创建数组
- 使用 ::std::vector 创建数组
- 在编译时以增量方式创建数组
- Numpy C API - 使用 PyArray_Descr 创建数组会导致段错误
- 为什么当我尝试在类中创建数组时"invalid use of non-static data member"我会收到错误?
- 取消引用指针以创建数组的副本
- C++ 在堆上创建数组而不对其进行初始化
- 数组的维度是在创建数组的那一刻确定的,以后不能更改的,这是真的吗?