data_type array[M][N];
data_type *array_p;
在gcc编译器里,如果直接进行赋值——array_p = array;回有指针赋值不匹配警告出现,因为在上面的赋值过程中,其实是将一个二级指针array赋值给array_p。
下面就对一个二维数组名做一个简单的说明,如上定义了一个二维数组后,array[0]、array[1]、array[2]、...array[M-1]都是一个指针,故array可以理解为一个指针数组,即array就是一个二级指针。
很多人使用二维数组的时候会将二维数组当成一位数组来使用,其实这种想法是不对的,例如,*(array+i*4+j)大家以为是在输出第i行j列的元素来,其实不是;当i=0时,上面的操作得到的是第j行的N个元素,而不是一个data_type元素,当i不是0的时候,输出地可能就是我们自己都不知道的东西。但是编译器不会报错,这是因为我们是直接面向地址的操作,不会产生数组下标越界导致的段错误之类的报告,因此在这儿有必要做一个日记。如果有不合适的地方,往各位高手指点。
阅读(1828) | 评论(1) | 转发(1) |