[C语言] C51结构体中存在数组,如何引用?

[复制链接]
3161|11
 楼主| nbsmaps 发表于 2015-5-9 10:41 | 显示全部楼层 |阅读模式
问题一:如何引用结构体中的数组
如:struct  student
     { uchar   a[8];
        uchar b;
        uint    c[3];
     }one;
引用:one.a[7] 这样行不行,目的要取出a数组中第三个值,7个值
问题二:多维数组的指针引用。
uchar a[8][20];
uchar *p;
p=&a;
要取出a[2][3]这个值,指针应如何操作?
谢谢了,在线等
ayb_ice 发表于 2015-5-9 16:51 | 显示全部楼层
one.a[7] 这个可以的

定义指向二维数组的指针
uchar (*p)[20];
然后
p = &a[0];
if(p[1][19] == 0x0){

}
就可以了
hk199500 发表于 2015-5-9 18:33 | 显示全部楼层
学习了
hk199500 发表于 2015-5-9 18:34 | 显示全部楼层
定义指向二维数组的指针
uchar (*p)[20];
然后
p = &a[0];
if(p[1][19] == 0x0){

}
就是这段没看懂
 楼主| nbsmaps 发表于 2015-5-9 19:50 | 显示全部楼层
意思是每个指针指向一维数组?那用指针反而不方便了
 楼主| nbsmaps 发表于 2015-5-9 19:50 | 显示全部楼层
二维数组在内存中的存储是怎样的?应用一个指针能全访问了
wind~风 发表于 2015-5-9 20:34 | 显示全部楼层
a[2][3]可以直接用p+2*20+3访问,另外2楼的意思是定义数组指针,楼主后面所说的每一个指针指向一个一维数组应该是uchar *p[8]这样子定义
diweo 发表于 2015-5-10 08:50 | 显示全部楼层
本帖最后由 diweo 于 2015-5-10 08:52 编辑

相似但不同的代码多写点,然后软件仿真,设几个断点,好好对比,这样才能记得牢。
ayb_ice 发表于 2015-5-11 08:53 | 显示全部楼层
wind~风 发表于 2015-5-9 20:34
a[2][3]可以直接用p+2*20+3访问,另外2楼的意思是定义数组指针,楼主后面所说的每一个指针指向一个一维数组 ...

看清楚了吗
wind~风 发表于 2015-5-11 12:00 | 显示全部楼层

怎么没看清楚还请指教,,你那个定义的意思是数组指针,指针指向一个长度为20的uchar型数组
ayb_ice 发表于 2015-5-11 14:12 | 显示全部楼层
wind~风 发表于 2015-5-11 12:00
怎么没看清楚还请指教,,你那个定义的意思是数组指针,指针指向一个长度为20的uchar型数组 ...

也对,就是指向二维数组的指针
wind~风 发表于 2015-5-11 21:07 | 显示全部楼层
ayb_ice 发表于 2015-5-11 14:12
也对,就是指向二维数组的指针

嗯,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

289

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部