BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #18337同步于 2009/1/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

struct怎么初始化才能在g++下编译通过呀?

bzdl
2009/1/5镜像同步5 回复
rt 我在网上看到以下几种方法,不过只有第一种可以编译通过 其他都不行 谁给看看怎么回事? 是要声明一个全局结构体变量, 在声明的同时初始化 ------------------------------------- 1 初始化 struct数据有3中初始化方法:顺序,C风格及C++风格的乱序。 1)顺序 这种方法很常见,在一般的介绍C的书中都有介绍。顺序初始化的特点是: 按照成员定义的顺序,从前到后逐个初始化;允许只初始化部分成员;在被初始化的成员之前,不能有未初始化的成员。 eg: struct User oneUser = {10, "Lucy", "/home/Lucy"}; 初始化之后,oneUser各个成员的值为: oneUser.id = 10; oneUser.name = "Lucy"; oneUser.home = "/home/Lucy"; oneUser.passwd = 0; 2)乱序(C风格) 顺序的缺陷是必须按成员定义的顺序逐个初始化,不能间隔。而乱序的方式则很好的解决了这个问题,因为这种方式是按照成员名进行。 eg: struct User oneUser = { .name = "Lucy", .id = 10, .home = "/home/Lucy" }; 3)乱序(C++风格) C++风格的乱序初始化方式跟C风格的一样,只是它更常用在C++代码里。 eg: struct User oneUser = { name:"Lucy", id:10, home:"/home/Lucy" }; 不论是哪种方式,都允许只初始化部分成员;未被初始化的成员默认为0(指针类型的成员默认为NULL)。两种乱序初始化方法,即可以用在C代码中,也可以用在C++代码中。
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
vcpp机器人#1 · 2009/1/5
第三种初始化的方法中,也必须按照顺序赋值, 如下,g++编译通过: struct User oneUser={id:10,name:"Lucy",home:"home/Lucy"}; 另外,可以对部分或者所有的成员初始化。 【 在 bzdl 的大作中提到: 】 : rt : 我在网上看到以下几种方法,不过只有第一种可以编译通过 : 其他都不行 : ...................
bzdl机器人#2 · 2009/1/5
o 我只对自己感兴趣的成员初始化, 比如第二个, 好像是不行的 【 在 vcpp (雪纷飞) 的大作中提到: 】 : 第三种初始化的方法中,也必须按照顺序赋值, : 如下,g++编译通过: : struct User oneUser={id:10,name:"Lucy",home:"home/Lucy"}; : ...................
vcpp机器人#3 · 2009/1/5
上述两个初始化方法的“按顺序”是指:必须从头开始,按照定义顺序,初始化一些成员 比如要初始化第三个,第一、二个成员也得初始化。 如果只对其中一些成员初始化的话,写个构造函数,或者直接用.成员吧。 【 在 bzdl 的大作中提到: 】 : o : 我只对自己感兴趣的成员初始化, 比如第二个, 好像是不行的
bzdl机器人#4 · 2009/1/6
我的需求是初始化,不是赋值, 这个 .成员 应该是赋值用的 大部分成员都取默认值(比如指针NULL,int 变量 0) 只需要对其中一个赋值 哦, 看来还是用构造函数吧 【 在 vcpp (雪纷飞) 的大作中提到: 】 : 上述两个初始化方法的“按顺序”是指:必须从头开始,按照定义顺序,初始化一些成员 : 比如要初始化第三个,第一、二个成员也得初始化。 : 如果只对其中一些成员初始化的话,写个构造函数,或者直接用.成员吧。 : ...................
merchant机器人#5 · 2009/1/11