| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 736 人关注过本帖
标题:关于union里边的数组成员和其他成员长度不一样的问题
取消只看楼主 加入收藏
JackSparrow
Rank: 1
来 自:厦门
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-8-27
收藏
 问题点数:0 回复次数:0 
关于union里边的数组成员和其他成员长度不一样的问题
前一段看一个新的系统里边有这么几个定义和用法:
//定义内容
typedef struct canaplform{
 uchar IntLevel :1;
 uchar    :7;
 uchar PLength[2];        //僨乕僞挿   [0]=L/[1]=H
 uchar PData[1];        //[1]可变长
} CAN_APLFORM;
 
typedef union{
 uchar all[sizeof(CAN_APLFORM)+16];
 CAN_APLFORM apl;
} UCANAPLALL16;
 
//应用以上定义
UCANAPLALL16 ctmp;

   ctmp.apl.PLength[0] = a;
   ctmp.apl.PLength[1] = b;
   ctmp.apl.PData[0]  = CANSRC_OFF;
   ctmp.apl.PData[1]  = CANSRCBANK_FF;
   ctmp.apl.PData[2]  = CANSRCADD_0;

 
问题:
C语言中规定对数组的定义时长度是不可变的,也就是定义[10],即数组长度为10,初始化时只能用[0]到[9]……
而此处用法为何定义[1],却可以用到[0][1][2]甚至更长到[15]。虽然知道union定义时给开辟了长度,但也不能这样用为定义到得数组啊……
搜索更多相关主题的帖子: 成员 数组 长度 union 
2009-08-27 10:50
快速回复:关于union里边的数组成员和其他成员长度不一样的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045604 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved