C++数组与指针中二维数组与指针数组的区别

二维数组是连续的内存,指向指针数组的指针是分散的。
二维数组的大小在编译时是固定的,而指针数组可以动态分配。
二维数组自动管理内存,指针数组手动释放。
二维数组参数传递需要指定列数,而指针数组参数传递更灵活。

用例:二维数组用于矩阵运算,指针数组用于不规则数据处理。
你自己掂量一下吧。

C++中二维数组&a[i]表示什么,是地址还是什么

&a[i] 是第 i 行的地址。
说白了,a[i]就是一个一维数组。
&a[i] 传递整行。
上周刚刚处理了类似的事情。
如何使用这个地址?

c++中如何初始化二维数组_c++二维数组初始化方法

坦白讲,初始化C++二维数组时选择的关键在于大小是在编译时确定还是在运行时确定。

直接初始化静态数组比较简单,但必须提前知道大小。
比如去年运行这个项目的时候,我们使用了int arr[3 ][4 ] = {{1 ,2 }, {5 ,6 }};,未填写的字段会自动补零,虽然没有麻烦,但不够灵活。
还有一点是,当使用int arr[3 ][4 ] = {1 ,2 ,3 };时,编译器会按顺序填充值,前三个数字被填充,剩下的零被填充。
很多人不重视它。

我最初认为对于动态数组使用new就足够了,但后来我发现这是错误的。
我必须记住手动删除[]。
去年我因为删除丢失的行指针而几乎崩溃。
这是一个陷阱。

初学者可以直接使用std::vector,如std::vector> arr(3 , std::vector(4 , 0));这种写法对于动态调整大小非常方便,并且不会浪费内存。
但如果您对大小有要求并且想要极致的性能,静态数组会更有效。

等等,还有一件事。
std::vector的嵌套虽然灵活,但是访问时不要越界,像arr[1 0][5 ]那样,会直接崩溃。