结构体嵌套结构体
结构体嵌套结构体
结构体嵌套结构体。
一个 struct 的成员可以是另一个 struct,形成嵌套。例如「班级」里包含「班主任信息」。外层成员若是内层类型,访问时要逐层用 . 或 ->,如 cls.teacher.name。
四级考试常给嵌套定义,问某成员类型、访问表达式是否合法、或输出某字段。写访问链时从外到内,不要漏层;初始化列表也可嵌套,但卷面更常考逐字段赋值。
struct Person { string name; };
struct ClassInfo { Person teacher; int count; };
ClassInfo c;
c.teacher.name = "Wang";
c.count = 42;
嵌套层数不多时,画一张「对象—成员」小图,比硬记表达式更稳。若题目改为指针变量,记得把中间的 . 换成 ->,其余层次关系不变,这是四级常换汤不换药的考法。
给定如下代码,
struct Person {
std::string name;
int age;
struct Address {
std::string street;
std::string city;
};
Address address;
};
下面描述错误的是( )。
下面 C++ 代码在一个结构体中又定义了别的结构体。这种结构体嵌套定义的方式语法不正确。
#include <string>
#include <vector>
using namespace std;
struct Library {
struct Book {
struct Author {
string name;
int birthYear;
};
string title;
int year;
Author author;
};
string name;
vector<Book> books;
};
运行如下代码会输出( )。
struct Point {
int x, y;
};
struct Rectangle {
Point topLeft;
Point bottomRight;
};
int main() {
Rectangle rect = {{10, 10}, {20, 20}};
rect.topLeft.x = 5;
Point* p = &rect.bottomRight;
p->y = 5;
cout << rect.topLeft.x + rect.bottomRight.y;
return 0;
}
一个结构体不能包含另一个结构体。
下面代码没有语法错误。
struct GameCharacter {
string name;
int level;
float position_x;
float position_y;
struct Equipment {
string weapon;
int attack_bonus;
int defense_bonus;
} equipment;
struct Skill {
string name;
int damage;
} skills[8];
int skill_count;
};