打印

结构体能这么赋值吗?

[复制链接]
4096|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
entepino|  楼主 | 2010-10-15 23:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

结构体

typedef
struct {


unsigned char
status01;


unsigned char
status02;


unsigned char
status03;


unsigned char
status04;


} tag_STRUCT_FLAG;


tag_STRUCT_FLAG
tag_struct_flag ;

#define
tag_struct_flag_default
{0x00,0X00,0X00};

tag_STRUCT_FLAG
=
tag_struct_flag_default ;

就是tag_struct_flag_default只有三个数,而tag_struct_flag这个结构体有四个char变量,能这样赋值吗?

相关帖子

沙发
highgear| | 2010-10-15 23:47 | 只看该作者
可以

使用特权

评论回复
板凳
原野之狼| | 2010-10-15 23:52 | 只看该作者
不同意2L意见 变量在函数外赋值需要在变量定义时就赋值 否则编译报错
typedef
struct {

unsigned char
status01;

unsigned char
status02;

unsigned char
status03;

unsigned char
status04;

} tag_STRUCT_FLAG;


#define
tag_struct_flag_default
{0x00,0X00,0X00};
tag_STRUCT_FLAG
tag_struct_flag = tag_struct_flag_default ;

使用特权

评论回复
地板
highgear| | 2010-10-16 00:10 | 只看该作者
还是原野之狼的眼睛好使, 不愧是从原野出来的, 楼主的定义确实不对。不过可以用 3常数初始化4变量结构, 某些编译器还支持更变态的初始化方法。

使用特权

评论回复
5
原野之狼| | 2010-10-16 00:34 | 只看该作者
嘿嘿 已昏人士嘛:lol

使用特权

评论回复
6
entepino|  楼主 | 2010-10-16 10:22 | 只看该作者
那说明status01=0x00,status02=0x00,status03=0x00,那status04等于什么?没有赋值,编译器是不是直接赋值为0?

使用特权

评论回复
7
liang7143| | 2010-10-16 15:09 | 只看该作者
6# entepino
对于全局变量,编译器一般都会按默认初始化,比如整形为0,浮点型为0.0,
局部变量一般不会初始化,是一个随机值··

使用特权

评论回复
8
entepino|  楼主 | 2010-10-16 16:32 | 只看该作者
好的,谢谢。

使用特权

评论回复
9
jack_shine| | 2010-10-16 18:02 | 只看该作者
:)

使用特权

评论回复
10
zhangshaoyan| | 2010-10-16 18:22 | 只看该作者
这种问题最好不要问,最好的方法就是试一下,用一下GNU的编译器,再用一下Microsoft的编译器,再用一下Borland的编译器,就能得到结论。

使用特权

评论回复
11
奇兵| | 2010-10-16 19:40 | 只看该作者
呵呵 tag_struct_flag = tag_struct_flag_default ;这个貌似不对呀!结构体的赋值应该用,结构体体的引用“结构体变量名.成员名”

使用特权

评论回复
12
原野之狼| | 2010-10-17 00:24 | 只看该作者
11L说的不对 3L的程序我已经测试过了
结构体变量在定义的时候是可以采用这种方式来做初始化的 只是在具体语句的时候不能使用直接使用赋值操作
例如
struct _tag_st_test
{...};

void foo(void)
{
    struct _tag_st_test var1 = {...}; // OK
    struct _tag_st_test var2;

    var2 = var1; // ERROR
}

使用特权

评论回复
13
奇兵| | 2010-10-17 18:57 | 只看该作者
小狼struct _tag_st_test var1 = {...}; 这个初始化的语句赋值方式正确!但 var2 = var1; 这个就想不通了!这是结构体变量的引用了!:dizzy:

使用特权

评论回复
14
李冬发| | 2010-10-18 23:06 | 只看该作者
C的99标准是可以结构整体赋值的。之前的标准则不能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

203

主题

629

帖子

1

粉丝