关于二维数组和指针的关系

发布于 2022-10-15 10:10:53 字数 121 浏览 47 评论 0

本人初学,对于这一块内容看的有些迷糊,哪位精通的大哥可以讲讲

int a[3][4];
上面的数组的任意元素可以表示成 *(*(a+i)+j),这句不明白,可以讲下么,一维数组可以看懂,这里实在比较难看

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

游魂 2022-10-22 10:10:53

编译器对多维数组进行处理的思想就是对其进行降维(把三维的降到二维,把二维降到一维)。
下面的这些转换,你仔细想一下吧!
int a[i];
a[i] = *(a+i);

int a[i][j];
a[i][j] = *(a[i]+j) = *(*(a+i)+j);

int a[i][j][k];
a[i][j][k] = *(a[i][j]+k) = *(*(a[i]+j)+k) = *(*(*(a+i)+j)+k);

一笑百媚生 2022-10-22 10:10:53

想象下 a 就像是个平面矩阵图  i 表示横向 j表示纵向  任意点就是横向和纵向交叉点

乞讨 2022-10-22 10:10:53

二维数组在内存中就像个尺子,大的单位按顺序存储一个一维数组(地址值),每个单位里面又存储着一个一维数组(元素值)。

十雾 2022-10-22 10:10:53

看<<C专家编程>>  彻底除掉这方面的疑惑

深白境迁sunset 2022-10-22 10:10:53

感谢二楼的,讲的很清楚

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文