访问结构体成员
本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 41 课,共 63 课。
现在你已经可以创建 struct 变量了,接下来需要学习如何处理其中存储的数据。点运算符(.)是访问和修改 struct 变量中各个成员的关键。
访问结构体成员的语法很简单:
structVariable.memberName使用 Point 结构体示例,你既可以读取其成员,也可以写入其成员:
struct Point p1;
// 向 struct 成员写入值
p1.x = 10;
p1.y = 20;
// 读取 struct 成员的值
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);点运算符的用法与访问其他变量完全相同,你可以在赋值、算术运算、函数调用中使用它,也可以在任何可以使用该类型普通变量的地方使用它。每个成员都像其声明类型的独立变量一样工作,让你能够以有条理且直观的方式操作结构体的数据。
挑战
简单编写一个 C 程序,演示如何使用点运算符访问和修改结构体成员。你的程序应:
- 定义一个名为
Car的struct,包含以下成员:- 一个整数
year,用于存储制造年份 - 一个大小为 20 的字符数组
brand,用于存储汽车品牌 - 一个整数
mileage,用于存储当前里程 - 一个浮点数
price,用于存储汽车价格
- 一个整数
- 创建一个名为
myCar的Car变量 - 读取以下输入值,并使用点运算符将它们赋给结构体成员:
- 读取一个表示年份的整数,并将其赋给
myCar.year - 读取一个表示品牌的字符串,并将其赋给
myCar.brand - 读取一个表示里程的整数,并将其赋给
myCar.mileage - 读取一个表示价格的浮点数,并将其赋给
myCar.price
- 读取一个表示年份的整数,并将其赋给
- 读取所有值后,执行以下操作:
- 使用
myCar.mileage += 1000;将里程增加 1000 - 使用
myCar.price -= 500.0;将价格减少 500.0
- 使用
- 使用点运算符访问每个成员,并按照以下精确格式打印汽车信息:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
这个挑战会考查你对点运算符的理解,包括读取和写入结构体成员。你将练习给结构体成员赋值、对它们执行算术运算,以及访问它们以输出信息。
例如,如果输入为:
2020
Toyota
50000
25000.50你的输出应为:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50亲手试试
#include <stdio.h>
#include <string.h>
// TODO: 在这里定义 Car 结构体
int main() {
// TODO: 创建一个名为 myCar 的 Car 变量
// 读取输入值
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: 使用点运算符将输入值赋给结构体成员
// TODO: 按要求修改里程数和价格
// TODO: 使用点运算符输出汽车详情
printf("Car Details:\n");
// 在这里输出年份、品牌、里程数和价格
return 0;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C 在线编译器