返回介绍

7.1.3 结构体变量的初始化与赋值

发布于 2025-04-11 22:33:02 字数 1444 浏览 0 评论 0 收藏 0

在定义结构体变量时,可以对其进行初始化。结构体变量的初始化方式与数组类似,使用大括号将初始值列表括起来。不同的是,列表中初始值的类型和顺序要与结构体成员的类型和顺序匹配。例如:

struct Person p1 = {"Tom", 20, 1.78f, 63.5f};

初始值列表中第一个初始值为字符串常量“Tom”,它会被初始化给 p1 的第一个成员 name;第二个初始值为整型常量值 20,它会被初始化给 p1 的第二个成员 age;第三个初始值为单精度浮点数常量值 1.78,它会被初始化给 p1 的第三个成员 height;第四个初始值为单精度浮点数常量值 63.5,它会被初始化给 p1 的第四个成员 weight。

也可以在初始化的时候,只给出部分初始值。例如:

struct Person p2 = {"Jack", 22};

初始值列表中只有两个初始值,编译器会将第 1 个初始值“Jack”初始化给 p2 的第一个成员 name;将第 2 个初始值 22 初始化给 p2 的第二个成员 age。而 p2 的第三和第四个成员,由于没有对应的初始值,因此,编译器会将其值初始化为 0。

对于结构体类型与结构体变量在同时定义的情况下,也可以对结构体变量进行初始化。例如:

定义了 struct Person 类型的结构体变量 p3,并对其进行初始化,将其 4 个成员值分别初始化为“hill”、23、1.80 和 75.5。

结构体变量的初始化方式虽然与数组的初始化方式有些类似,但数组间是不能相互赋值的,而结构体变量间却可以相互赋值。例如:

p2 = p1;

将结构体变量 p1 赋值给结构体变量 p2 后,结构体变量 p2 各成员的值会与 p1 各成员的值相同。

我们也可以将一个结构体变量,作为另一个结构体变量的初始值。例如:

struct Person p4 = p1;

在定义结构体变量 p4 时,将结构体变量 p1 作为其初始值。同样地,经过初始化后,结构体变量 p4 各成员的值与 p1 各成员的值相同。

需要注意的是,不论是赋值还是初始化,两边的结构体变量的类型都必须一致。不能将一个结构体变量初始化或赋值给另外一种类型的结构体变量。假设有另一个结构体类型 A,我们定义出该类型的变量 a1,并将 p1 作为其初始值。例如:

struct A a1 = p1;  //错误

p1 是 struct Person 类型的结构体变量,而 a1 被定义为 struct A 类型的结构体变量,因此,不能将 p1 作为 a1 的初始化值。即便是两个结构体变量所拥有的成员类型、数量和顺序完全相同,也不可以。对于赋值,也是同样的道理。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。