Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用二维阵列时,在列中循环与在行中循环_C++_Arrays_Pointers - Fatal编程技术网

C++ 使用二维阵列时,在列中循环与在行中循环

C++ 使用二维阵列时,在列中循环与在行中循环,c++,arrays,pointers,C++,Arrays,Pointers,我正在努力理解这段代码。让我困惑的第一件事是,在第二行代码中,我相信他们正在创建一个指针数组,计划是这些指针将指向数组 我知道计算机不在乎,但对我来说,最合乎逻辑的做法是让指针数组保持水平,然后每个数组都可以从水平线上的点下拉 那么,使用“dynamicArray=newint*[COLUMNS];”替代是否合理 int **dynamicArray = 0; //为行元素分配的内存 dynamicArray = new int *[ROWS] ; //为每列的元素分配的内存 for( in

我正在努力理解这段代码。让我困惑的第一件事是,在第二行代码中,我相信他们正在创建一个指针数组,计划是这些指针将指向数组

我知道计算机不在乎,但对我来说,最合乎逻辑的做法是让指针数组保持水平,然后每个数组都可以从水平线上的点下拉

那么,使用“dynamicArray=newint*[COLUMNS];”替代是否合理

int **dynamicArray = 0;
//为行元素分配的内存

dynamicArray = new int *[ROWS] ;
//为每列的元素分配的内存

for( int i = 0 ; i < ROWS ; i++ )  
dynamicArray[i] = new int[COLUMNS];
for(int i=0;i
//释放分配的内存

for( int i = 0 ; i < ROWS ; i++ )  
delete [] dynamicArray[i] ;  
delete [] dynamicArray ;
for(int i=0;i
编辑:我想得更多了,我经常被绊倒的是,我对行和列的想法是错误的。
dynamicArray=新整数*[行]
我理解这是一个指针数组,每个指针都指向一列。每列中的元素数等于行数(在我们的2D数组中,每行中有一个垂直元素)。 我的理解正确吗?

当我需要使用嵌套for循环来初始化二维数组时,我也会经常出错

行/列是对称/可互换的,正如您所说,“计算机不在乎”。话虽如此,为什么您认为“让指针数组保持水平,然后每个数组都可以从水平线上的点下拉,这是最合乎逻辑的”

我会想另一种方式。我会发现将水平对象的行“可视化”要容易得多(毕竟,我们是水平写的(比如,一个字符数组),行/行从上到下(比如,一个数组数组))。我认为代码比你建议的更自然(对我来说)

关键是,我们都有不同的想法,在一天结束时,行/列只是变量,可以很容易地写成X/Y、V/H、W/H或其他形式