能力值:
( LV2,RANK:10 )
2 楼
联合变量可以被初始化,但这个初始值必须是联合第一个成员的类型,而且它必须位于一对花括号里面。例如,
union {
int a;
float b;
char c[4];
} x = {5};
把x.a初始化为5.
我们不能把这个变量初始化为一个浮点值或字符值。如果给出的初始值是任何其他类型,它就会转换(如果可能的话)为一个整数并赋值给x.a
--以上为《C和指针》10.6.2 联合的初始化章节
能力值:
( LV4,RANK:50 )
3 楼
[QUOTE=ybhdgggset;1199930]联合变量可以被初始化,但这个初始值必须是联合第一个成员的类型,而且它必须位于一对花括号里面。例如,
union {
int a;
float b;
char c[4];
} x = {5};
把x.a初始化为5.
我们不能把这个变量初始化...[/QUOTE]
这么说就是无解了?可怜的人……
c99用.b就可以赋值,现在c89完了
能力值:
( LV12,RANK:250 )
4 楼
struct yy
{
union xx
{
char* p;
double a;
};
byte c;
};
这样不就好了
能力值:
( LV4,RANK:50 )
5 楼
不行的,原因在于这个结构被多次定义全局变量,有的给第一个赋值,有的给第二个赋值,怎么改都通用不了的
能力值:
( LV12,RANK:250 )
6 楼
那为啥不分卡,每种定一个结构体
能力值:
( LV3,RANK:30 )
7 楼
搞清楚联合的意义好不好。
union TYPE_X
{
int a;
char* pStr;
};
实际上你自己定义个数组不就好了
char g_Data[]={0xFF,0xFF,0xFF,0xFF};
或者
char g_Data[]={"fdfgdgfgfg"};
需要用时
TYPE_X * pVar=(TYPE_X *)g_Data;
能力值:
( LV4,RANK:50 )
8 楼
[QUOTE=mccoysc;1199947]搞清楚联合的意义好不好。
union TYPE_X
{
int a;
char* pStr;
};
实际上你自己定义个数组不就好了
char g_Data[]={0xFF,0xFF,0xFF,0xFF};
或者
char g_Data[]={...[/QUOTE]
联合还有啥意义不意义的,用过c的人都知道,又不是复杂的东东
我只求看有没有给第二个赋值的方法,不能改的原因主要是该声明被很多地方用来定义全局变量了
你想想如果人家已经用来定义100个对象,我一个个改明显是不明智的方法
而且我也说了,c99完美支持给任意元素赋值,所以我只想找个c89能模拟的方法而已,当然如果找不到也就算了
能力值:
( LV4,RANK:50 )
9 楼
如果是我自己定义的,好办
问题是人家定义的,而且类似的定义非常多,而且被用来声明了N个变量,如果大改,就不合适了