网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

如何用指针数组和数组指针来表示二维数组?

时间:2023-03-06 11:38

人气:

作者:admin

标签:

导读:a是一个二维数组,3 行 4 列,一共 12 个元素。...

如何用指针数组和数组指针来表示二维数组?

今天来给大家分享一道经典的笔试题。

1047cc5a-bbcc-11ed-bfe3-dac502259ad0.png  

a是一个二维数组,3 行 4 列,一共 12 个元素。

p是个数组,数组里面元素个数不详,每个元素都是整型指针。

那么它应该如何初始化?

首先,既然是数组,初始化一定需要一个大括号,然后里面填上多个整型指针。

int*p[]={};
那在二维数组中,能不能找到int *类型的数据?

肯定是有的。

在二维数组中,无非有这么几种写法:
a;
a[0];
a[0][0];
&a;
&a[0];
&a[0][0];
数组名肯定不对,它是一个二级地址;

&a更不对,它是三级地址;

a[0][0]是个具体的元素,跟地址没有关系。

10659668-bbcc-11ed-bfe3-dac502259ad0.png  

剩下的就是a[0]和&a[0][0]。

其实这两个的含义一样,都表示第一行第一个元素的地址,既然是元素的地址,那肯定就是int *类型。

于是p的初始化就可以写成:
int*p[] = {a[0], a[1], a[2]};
分别是第一行、第二行、第三行首元素的地址。

而p后面的中括号也可以写上3,表示数组有3个元素。
int *p[3] = {a[0], a[1], a[2]};
内存模型画出来就是这样的,数组p包含三个指针,每个指针都指针二维数组每行的第一个元素。

10e5048e-bbcc-11ed-bfe3-dac502259ad0.png

再来看q。

1047cc5a-bbcc-11ed-bfe3-dac502259ad0.png  

q是个指针,指向数组,而且是个一维数组,因为只有一个中括号,但是数组有几个元素不详,每个元素都是整数。

那数组a中有没有一维数组数组呢?

当然有的,我们刚接触二维数组的时候,老师就跟我们说过,二维数组就是由多个一维数组组成,第一行是个一维数组,第二行也是一个一维数组。

11965702-bbcc-11ed-bfe3-dac502259ad0.png  

那我们只要把第一行的地址赋值给q就行。

于是可以把q初始化成:
int(*q)[] = a;
a表示数组第一行的地址,所以q后面的中括号也能顺理成章的写成4,因为一维数组有4个元素。
int (*q)[4] = a;
q的含义和a是一样的,表示数组第一行的地址,q加一,就指向数组的下一行。

11b71cc6-bbcc-11ed-bfe3-dac502259ad0.png  

这个就是C语言里面的指针数组和数组指针,怎么样,迷糊了没?




审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信