加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在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个元素.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读