struct 结构名 {
成员类型 成员名;
成员类型 成员名;
};
struct Test{
int first;
double second;
}Sample;
方法一 定义时直接赋值
Sample s(1, 1.00);
方法二 先定义,后赋值缺点:必须匹配变量顺序,不能错位
Sample s; s.second = 1.00; s.first = 1;
方法三 定义时乱序赋值(C风格)优点:不需要关心顺序
重点:
C99标准,gcc支持,vs不支持。必须加. VB也有类似用法
相当于1+2
这种方法在Linux内核(kernel)中经常使用,在音视频编解码库FFmpeg中也大量频繁使用,还是很不错的一种方式。
Sample s{
.second = 1.00;
.first = 1;
}
方法四 定义时乱序赋值(C++,C#风格)
重点:
可以用在c语言代码中,只是更常用在c++代码中
gcc支持这种编译,vs不支持
Sample s{
second : 1.00;
first : 1;
}
vs2019结构体初始化常见问题
使用vs2019编辑c++的项目,使用方法三在VS019上编写编译
出现报错,经过设置后也是支持的,特意写下来。
版本要求: vs2019 16.1版本或以上版本
设置步骤如下:
(1) 项目
(2) 属性
(3)C/C++
(4) 语言
(5)C++语言标准 选 预览项 最新功能, 如下图:


![【C/C++】结构体初始化以及[VS2019]问题解决【详细】 【C/C++】结构体初始化以及[VS2019]问题解决【详细】](http://www.mshxw.com/aiimages/31/832924.png)
