C++结构体初始化

C++结构体初始化教程

C++ 中,我们要初始化一个 结构体,有三种方法,即,顺序初始化、乱序初始化和 C++ 风格的初始化。

C++结构体初始化

语法

struct structName varName = {fileldValue1, fileldValue2, fileldValue3};

参数

参数 描述
struct 结构体的关键字。
structName 结构体名。
varName 结构体变量名。
fileldValue1 结构体第一个字段对应的初始化值。
fileldValue2 结构体第二个字段对应的初始化值。
fileldValue3 结构体第三个字段对应的初始化值。

说明

我们分别使用了 fileldValue1 来初始化了结构体 varName 中的第一个字段的值,使用了 fileldValue2 来初始化了结构体 varName 中的第二个字段的值,fileldValue3 来初始化了结构体 varName 中的第三个字段的值。

使用这种方式初始化,我们只能按照顺序一个个的初始化结构体的成员。

C++初始化结构体成员

语法

struct structName varName = { .filed1 = value1, .filed2 = value2, .filed3 = value3 };

说明

我们分别使用了 value1 来初始化了结构体 varName 中的 filed1 字段,使用了 value2 来初始化了结构体 varName 中的 filed2 字段,value3 来初始化了结构体 varName 中的 filed3 字段。

使用这种方式初始化,我们可以按照任意的顺序初始化结构体的成员。

注意

使用这种方式初始化结构体成员使用的是 .filed1 = value1 的形式,且除了最后一个成员,其他的每一个成员的最后都要加一个逗号,即 ,

最后一个成员不可以加逗号。

C++初始化结构体成员

语法

struct structName varName = { filed1 : value1, filed2 : value2, filed3 : value3 };

说明

我们分别使用了 value1 来初始化了结构体 varName 中的 filed1 字段,使用了 value2 来初始化了结构体 varName 中的 filed2 字段,value3 来初始化了结构体 varName 中的 filed3 字段。

使用这种方式初始化,我们可以按照任意的顺序初始化结构体的成员。

注意

使用这种方式初始化结构体成员使用的是 filed1 : value1 的形式,且除了最后一个成员,其他的每一个成员的最后都要加一个逗号,即 ,

最后一个成员不可以加逗号。

案例

C++顺序初始化结构体成员

顺序初始化结构体中的成员

#include <iostream> using namespace std; struct Car{ char *brand; int price; int maxSpeed; }; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; struct Car car = {"Benz", 100000, 256}; char *brand = car.brand; int price = car.price; int maxSpeed = car.maxSpeed; cout << "Init Brand = " << brand << " Price = " << price << " MaxSpeed = " << maxSpeed << endl; return 0; }

程序运行后,控制台输出如下图所示:

06_C结构体初始化.png

我们首先,定义了一个结构体 Car,该结构体有三个成员,即一个 字符串 类型的 brand、一个 int 类型 的 price 和一个 int 类型 的 maxSpeed。

接着,我们使用了顺序初始化的方式,初始化了结构体 car 的三个成员,即分别将结构体 car 的 brand 字段初始化为 “Benz”、结构体 car 的 price 字段初始化为 100000、结构体 car 的 maxSpeed 字段初始化为 256。

C++乱序初始化结构体成员

乱序初始化结构体中的成员

#include <iostream> using namespace std; struct Car{ char *brand; int price; int maxSpeed; }; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; struct Car car = { .price = 100000, .maxSpeed = 256, .brand = "Benz" }; char *brand = car.brand; int price = car.price; int maxSpeed = car.maxSpeed; cout << "Init Brand = " << brand << " Price = " << price << " MaxSpeed = " << maxSpeed << endl; return 0; }

程序运行后,控制台输出如下图所示:

07_C结构体初始化.png

这次,我们在结构体里面,通过 “.FileldName” 的形式初始化了结构体的成员,使用这种方式初始化结构体的成员,不需要按照顺序,只需要在前面写上我们需要初始化的字段名即可。

最后,我们使用 cout 打印了结构体中的成员,我们发现,结构体中的字段已经被我们正确赋值了。

C++风格结构体初始化

使用 C++ 风格来初始化结构体成员

#include <stdio.h> struct Car{ char *brand; int price; int maxSpeed; }; void main() { printf("嗨客网(www.haicoder.net)\n\n"); struct Car car = { price : 100000, maxSpeed : 256, brand : "Benz" }; char *brand = car.brand; int price = car.price; int maxSpeed = car.maxSpeed; printf("Init Brand = %s, Price = %d, MaxSpeed = %d\n", brand, price, maxSpeed); }

程序运行后,控制台输出如下图所示:

08_C结构体初始化.png

这次,我们使用了 C++ 风格来初始化了结构体的成员。

C++结构体初始化总结

在 C++ 中,我们要初始化一个结构体,有三种方法,即,顺序初始化、乱序初始化和 C++ 风格的初始化。