CC++结构体初始化与赋值

原创 2016年05月30日 13:28:57

1.CC++结构体的初始化

今天看到项目中对自定义结构体初始化方式有点陌生,特在此罗列一下可用的结构体初始化的方式。

对结构体

struct A {
    int b;
    int c;
}

有几种初始化方式:

第一种:

struct A a = {
    .b = 1,
    .c = 2
};

第二种:

struct A a={
    b:1,
    c:2
};

第三种:

struct A a1 = { 1, 2};

Linux内核喜欢用第一种,使用第一种和第二种时,成员初始化顺序可变。

第四种:
因为C++中的struct可以看作class,结构体也可以拥有构造函数,所以我们可以通过结构体的构造函数来初始化结构体对象。

给定带有构造函数的结构体:

struct A {
    A(int a,int b){
        this->a=a;
        this->b=b;
    };
    int b;
    int c;
}

那么结构体对象的初始化可以像类对象的初始化那样,如下形式:

struct A a(1,2);

注意: struct如果定义了构造函数的话,就不能用大括号进行初始化了,即不能再使用前三种初始化的方式了。

2.CC++结构体的赋值

变量的赋值和初始化是不一样的,初始化是在变量定义的时候完成的,是属于变量定义的一部分,赋值是在变量定义完成之后想改变变量值的时候所采取的操作。

还是给定结构体A:

struct A {
    int b;
    int c;
}

注意:结构体变量的赋值是不能采用大括号的方式进行赋值的,例如下面的赋值是不允许的。

struct A  a;
//错误赋值
a={1,2};

下面列出常见结构体变量赋值的方法。

第一种:
使用memset对结构体变量进行置空操作:

//按照编译器默认的方式进行初始化(如果a是全局静态存储区的变量,默认初始化为0,如果是栈上的局部变量,默认初始化为随机值)
struct A a; 
memset(&a,0,sizeof(a));

第二种:
依次给每一个结构体成员变量进行赋值:

struct A a; 
a.b=1;
a.c=2;

第三种:
使用已有的结构体变量给另一个结构体变量赋值。也就是说结构体变量之间是可以相互赋值的。

struct A a={1,2};
struct A aa;
aa=a;               //将已有的结构体变量付给aa

参考文献

[1] 2016腾讯春季校园实习招聘技术岗初试(一面)问题汇总(CC++后台)
[2] 结构体初始化

版权声明:感谢您对博文的关注!2017年秋季校招已经开始,有需要内推腾讯的可以QQ(1589276509)联系我哈,期待你的加入。 举报

相关文章推荐

腾讯2016春季校园实习招聘技术岗初试(一面)问题汇总(CC++后台)

1.前言2016.4.11日广州参加了CC++后台技术一面,面试官人很温和,经历了大概70分钟的问答,特将遇到的面试问题汇总如下,自己总结学习,亦供网友参考。2.问题汇总问题一: 不好意思,我有事,...

结构体初始化

今天同事聊到内核中结构体初始化, 对结构体 struct a { int b; int c; } 有几种初始化方式: struct a a1 = {  .b = 1,  .c = 2...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

fread()和fwrite()函数读写文件操作

[cpp] view plaincopyprint? #include    int main()  {      FILE* pFile; &#...
  • liyjw
  • liyjw
  • 2013-10-22 09:02
  • 11855

(C/C++基础)结构体_初始化_赋值_定义_声明

首先介绍一下初始化、赋值、定义、声明这四个概念。 初始化:创建变量并给它赋初值。初始化和赋初值不同。初始化=带指定初始值的定义。一个程序中,一个变量只能初始化一次。如:int  i=0; 赋值:擦除对...

C++类中的4个特殊函数 - 缺省构造函数、拷贝构造函数、拷贝赋值操作符和析构函数

由于CSDN长时间无法显示图片,本文已暂时迁移到:http://patmusing.blog.163.com/blog/static/1358349602009113061024796/

C/C++ struct初始化/复制/内存分配技巧

为了方便后面的介绍,先定义一个struct类型:         struct User         {    ...

struct类型的赋值

struct 类型变量赋值,一直感觉有危险,畏手畏脚。     #include using namespace std; struct node{ struct addr *ad; n...
  • wwzcx
  • wwzcx
  • 2013-04-17 23:52
  • 1996

c/c++ 中结构体的初始化与类的初始化的不同之处

在C++ 中类的初始化会调用构造函数,根据构造函数来初始化类的变量。如果某个变量没有初始化,则该变量的值是一个随机值。结构体的初始化,是根据所给值来初始化的,如果结构中某个变量的没有赋值,那么该变量被...

C++ 结构体初始化方法

C++结构体初始化有以下几种方法: 使用构造函数 在C++中,struct可以当做类(class)来使用,同样支持成员函数,构造函数,析构函数。所以可以写对应的构造函数,实现自由初始化。 定义时,按...

浅析C++中结构体的定义、初始化和引用

以下是对C++中结构体的定义、初始化和引用进行了详细的介绍,需要的朋友可以过来参考下 定义: 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也...
  • steft
  • steft
  • 2017-02-09 10:49
  • 2214
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)