c - C中多维数组的存储顺序
问题描述
使用 C 编译器,数组元素是按列主要顺序还是行主要顺序存储的,还是依赖于编译器?
int arr[2][3]={1,2,3,4,5,6};
int array[3][2]={1,2,3,4,5,6};
关于打印 arr 和数组输出:arr:
1 2 3
4 5 6
大批:
1 2
3 4
5 6
似乎它总是更喜欢行大订单?
解决方案
行主要顺序是标准规定的。
连续的下标运算符指定多维数组对象的一个元素。如果 E 是一个维度为 ixjx 的 n 维数组 (n >= 2)。. . xk,然后 E(用作左值以外)被转换为指向 (n - 1) 维数组的指针,维数为 jx 。. . xk。如果一元 * 运算符显式地或作为下标的结果隐式地应用于此指针,则结果是引用的 (n - 1) 维数组,如果用作左值以外的数组,它本身将转换为指针。由此得出,数组以行优先顺序存储(最后一个下标变化最快)。
(强调我的)
推荐阅读
- javascript - 如何调用另一个组件函数?
- python - 断开音乐机器人与语音通道的连接
- http - 在 Go 中发送未编码的 GET 请求
- python - 具有页面限制的网页抓取
- vue.js - nuxt generate 后css更改
- javascript - 我想在 JavaScript 中单击按钮时从 Firebase 实时数据库中删除项目
- javascript - 使用 javascript 更改 liferay-ui:input-localized XML
- c++ - CPP,创建数组,我只看到一个参数
- rust - 如何关闭宏观卫生?
- python - 在字符串中查找匹配的左/右大括号索引