如何在C/C++中获取多维数组的列?
发布时间:2020-12-16 06:49:23 所属栏目:百科 来源:网络整理
导读:int matrix[9][9],*p;p=matrix[0]; 这工作并给出第一行矩阵,但如何得到矩阵的第一列我试过p = matrix [] [0]; ?另外我不明白为什么下面的代码会出现编译错误? int matrix[9][9],p[9]; // it looks really ugly,byt why it doesn't work ?p=matrix[0]; // c
int matrix[9][9],*p; p=matrix[0]; 这工作并给出第一行矩阵,但如何得到矩阵的第一列我试过p = matrix [] [0]; ?另外我不明白为什么下面的代码会出现编译错误? int matrix[9][9],p[9]; // it looks really ugly,byt why it doesn't work ? p=matrix[0]; // compiler gives "invalid array assigment" 是因为多维数组是数组的数组 – 我们应该将matrix [i] [j]解释为第i个嵌套数组的第j个元素? 解决方法
在C/C++中,多维数组实际上存储为一维数组(在存储器中).您的2D矩阵存储为具有行优先排序的一维数组.这就是为什么从列中删除它并不容易,并且默认情况下不提供.内存中没有连续的数组,您可以获得指向多维数组列的指针.见下文:
当你执行p = matrix [0]时,你只是得到指向第一个元素矩阵[0] [0]的指针,这使你认为你得到了指向第一行的指针.实际上,它是指向包含矩阵的整个连续数组的指针,如下所示: matrix[0][0] matrix[0][1] matrix[0][2] . . matrix[1][0] matrix[1][1] matrix[1][2] . . matrix[8][0] matrix[8][1] matrix[8][2] . . matrix[8][8] 如上所示,任何给定列的元素由相应行中的其他元素分隔. 因此,作为旁注,使用指针p,如果您愿意,可以遍历矩阵的整个81个元素. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |