OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5393|回复: 7

有没有对结构体熟的,帮忙解决个关于结构体数组嵌套的问题

[复制链接]

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1369
金钱
1369
注册时间
2014-2-13
在线时间
169 小时
发表于 2014-7-6 19:09:40 | 显示全部楼层 |阅读模式
5金钱
面向对象的思想用C实现一个关于窗体的结构体,嵌套了两个结构体数组没有通过,不知道是哪的问题,不知哪位大侠可以看下。其实看到原子的综合例程里有,不过也没很看懂,有可能应该我写的初始化有问题。比较郁闷,谁给解答一下。。。

用vc6.0C测试的程序如下(程序不长):
[mw_shl_code=c,true]#include "stdio.h" #define u8 unsigned char #define u16 unsigned short int void main() { typedef struct //下拉窗口结构体 { u16 x; //横坐标X u16 y; //纵坐标Y } _C_BOX; typedef struct //下拉窗口结构体 { _C_BOX c_box[5]; } _Input; _Input input[2] = //数值 { { {1,2}, {1,2}, {1,2}, {1,2}, {1,2} }, { {3,4}, {3,4}, {3,4}, {3,4}, {3,4} } }; printf("*****"); }[/mw_shl_code]


最佳答案

查看完整内容[请看2#楼]

正解: [mw_shl_code=c,true]#include "stdio.h" #define u8 unsigned char #define u16 unsigned short int typedef struct //下拉窗口结构体 { u16 x; //横坐标X u16 y; //纵坐标Y } _C_BOX; typedef struct //下拉窗口结构体 { _C_BOX c_box[5]; } _Input; _Input input[3]= { { {{1,2},{3,4},{5,6},{7,8},{9,10}}, }, { {{1,2},{3,4},{5,6},{7,8},{9,10} ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1369
金钱
1369
注册时间
2014-2-13
在线时间
169 小时
 楼主| 发表于 2014-7-6 19:09:41 | 显示全部楼层
正解:
[mw_shl_code=c,true]#include "stdio.h" #define u8 unsigned char #define u16 unsigned short int typedef struct //下拉窗口结构体 { u16 x; //横坐标X u16 y; //纵坐标Y } _C_BOX; typedef struct //下拉窗口结构体 { _C_BOX c_box[5]; } _Input; _Input input[3]= { { {{1,2},{3,4},{5,6},{7,8},{9,10}}, }, { {{1,2},{3,4},{5,6},{7,8},{9,10}}, }, { {{1,2},{3,4},{5,6},{7,8},{9,10}}, }, }; int main() { printf("%d %d\r\n",input[0].c_box[0].x, input[0].c_box[0].y); printf("%d %d\r\n",input[1].c_box[1].x, input[1].c_box[1].y); }[/mw_shl_code]
一对花括号惹的祸啊,层层相套是正解啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-6 23:54:26 | 显示全部楼层
根据编译报错提示去修改。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1369
金钱
1369
注册时间
2014-2-13
在线时间
169 小时
 楼主| 发表于 2014-7-7 08:08:10 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
嗯。。。定义肯定是对的初始化有问题,结构体嵌套必须逐级访问,当时不知道定义时初始化是不是可以用一层一层的大括号直接赋值。编译的错误也是直接指向初始化的,貌似是成员多了的错误,找了一晚上资料也没看到想要的答案。。。
回复

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1369
金钱
1369
注册时间
2014-2-13
在线时间
169 小时
 楼主| 发表于 2014-7-7 08:19:06 | 显示全部楼层
[mw_shl_code=c,true][/mw_shl_code] [mw_shl_code=c,true]
[mw_shl_code=c,true]#include "stdio.h" #define u8 unsigned char #define u16 unsigned short int void main() { typedef struct //下拉窗口结构体 { u16 x; //横坐标X u16 y; //纵坐标Y } _C_BOX; typedef struct //下拉窗口结构体 { _C_BOX c_box[5]; } _Input; _Input input = //数值 { { {1,2}, {1,2}, {1,2}, {1,2}, {1,2} } }; printf("%d %d\n",input.c_box[0].x,input.c_box[0].y); }[/mw_shl_code]

这样就是正确的,但是input是结构体数字组就不行,应该怎么初始化带结构体数组的???[/mw_shl_code]
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-7 10:11:46 | 显示全部楼层
回复【3楼】solo:
---------------------------------
单独搞个函数初始化吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1369
金钱
1369
注册时间
2014-2-13
在线时间
169 小时
 楼主| 发表于 2014-7-7 10:37:02 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
那样太麻烦,已经知道是什么问题了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-7 23:44:04 | 显示全部楼层
回复【7楼】solo:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-6 16:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表