我试图理解这段代码。让我感到困惑的第一件事是,在第二行代码中,我相信他们正在创建一个指针数组,并且计划是这些指针将指向数组。
我知道计算机并不关心,但对我来说,让指针数组水平是最合乎逻辑的,然后每个数组都可以从该水平线上的点下拉。
那么,“dynamicArray = new int *[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 < ROWS ; i++ )
delete [] dynamicArray[i] ;
delete [] dynamicArray ;
编辑:我更多地考虑了这个问题,我经常被绊倒的事情是我以错误的方式考虑行和列。
dynamicArray = new int *[ROWS];
我理解这是一个指针数组,每个指针都指向一列。每一列中的元素数等于行数(在我们的二维数组中,列的每一行都有一个垂直元素)。我理解正确吗?
当我需要使用嵌套的 for 循环来初始化二维数组时,我也经常被绊倒。
行/列是对称的/可互换的,正如您所说,“计算机不在乎”。话虽如此,您为什么认为“让指针数组水平放置然后每个数组都可以从该水平线上的点下拉是最合乎逻辑的”?
我会反其道而行之。我会发现“可视化”水平对象的行要容易得多(毕竟,我们水平书写(例如,字符数组),并且行/行从上到下(例如,数组数组))。我认为代码比你建议的更自然(对我来说)。
关键是,我们都有不同的想法,归根结底,ROWS/COLUMNS 只是变量,可以很容易地写成 X/Y 或 V/H 或 W/H 或其他什么。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句