我正在尝试理解这段代码。让我感到困惑的第一件事是,在第二行代码中,我相信他们正在创建一个指针数组,并且计划是这些指针指向数组。
我知道计算机并不关心,但对我来说,指针数组是水平的,然后每个数组都可以从该水平线上的点下拉,这是最合乎逻辑的。
那么," 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 ;
编辑:我更多地考虑了这一点,而且我经常被绊倒的事情是我以错误的方式思考行和列。答案 0 :(得分:1)
行/列是对称/可互换的,正如您所说,&#34;计算机并不关心&#34;。话虽如此,为什么你认为指针数组是水平的,然后每个数组都可以从水平线上的点下拉,这是最合乎逻辑的?#34;?
我会想到另一种方式。我会发现更容易&#34;可视化&#34;水平对象的行(毕竟,我们水平编写(比如一个字符数组),行/行从上到下(比如一个数组数组))。我认为代码比你的建议更自然(对我而言)。
关键是,我们都有不同的想法,并且在一天结束时,ROWS / COLUMNS只是变量,可以很容易地写成X / Y或V / H或W / H或其他任何东西。