今天继续讲解派生数据类型:
这里写目录标题
数组: 一组相同类型的数据集合。
下面是一个 C++ 中数组的示例程序,展示了如何定义数组、初始化数组、访问数组元素以及进行基本操作。
#include <iostream>
int main() {
// 定义并初始化一个整型数组
int numbers[5] = {10, 20, 30, 40, 50};
// 输出数组元素
std::cout << "数组元素: " << std::endl;
for (int i = 0; i < 5; i++) {
std::cout << "numbers[" << i << "] = " << numbers[i] << std::endl;
}
// 计算数组元素的总和
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += numbers[i];
}
std::cout << "数组元素的总和: " << sum << std::endl;
// 找出数组中的最大值
int max = numbers[0];
for (int i = 1; i < 5; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
std::cout << "数组中的最大值: " << max << std::endl;
// 修改数组元素
numbers[2] = 100; // 将第三个元素修改为 100
std::cout << "修改后的数组元素: " << std::endl;
for (int i = 0; i < 5; i++) {
std::cout << "numbers[" << i << "] = " << numbers[i] << std::endl;
}
return 0;
}
说明
数组定义:定义了一个整型数组 numbers,并初始化为 {10, 20, 30, 40, 50}。
输出数组元素:使用循环遍历数组,并输出每个元素的值。
计算总和:再次使用循环计算数组元素的总和,并输出结果。
找出最大值:通过比较数组元素,找出最大值并输出。
修改数组元素:将数组的第三个元素修改为 100,并再次输出数组的所有元素。
结构体 (struct): 自定义数据类型,可以包含不同类型的数据。
下面是一个 C++ 中结构体的示例程序,展示了如何定义结构体、创建结构体变量、访问结构体成员以及进行基本操作。
#include <iostream>
#include <string>
// 定义一个结构体,用于表示学生
struct Student {
std::string name; // 学生姓名
int age; // 学生年龄
float grade; // 学生成绩
};
int main() {
// 创建结构体变量并初始化
Student student1;
student1.name = "Alice";
student1.age = 20;
student1.grade = 85.5;
// 输出结构体成员
std::cout << "学生姓名: " << student1.name << std::endl;
std::cout << "学生年龄: " << student1.age << std::endl;
std::cout << "学生成绩: " << student1.grade << std::endl;
// 创建另一个结构体变量并初始化
Student student2 = {"Bob", 22, 90.0};
// 输出第二个学生的信息
std::cout << "学生姓名: " << student2.name << std::endl;
std::cout << "学生年龄: " << student2.age << std::endl;
std::cout << "学生成绩: " << student2.grade << std::endl;
// 修改第一个学生的成绩
student1.grade += 5.0; // 增加 5 分
std::cout << "修改后的 Alice 的成绩: " << student1.grade << std::endl;
return 0;
}
共用体 (union): 允许在相同的内存位置存储不同类型的数据。
#include <iostream>
#include <cstring> // 用于 strcpy
// 定义一个共用体,用于表示不同类型的数据
union Data {
int intValue; // 整数
float floatValue; // 浮点数
char stringValue[20]; // 字符串
};
int main() {
// 创建共用体变量
Data data;
// 使用整型
data.intValue = 42;
std::cout << "整型值: " << data.intValue << std::endl;
// 使用浮点型
data.floatValue = 3.14f;
std::cout << "浮点型值: " << data.floatValue << std::endl;
// 使用字符串
strcpy(data.stringValue, "Hello");
std::cout << "字符串值: " << data.stringValue << std::endl;
// 注意:共用体的大小是其最大成员的大小,因此这里只能安全使用最后赋值的类型
std::cout << "当前有效数据类型:字符串值: " << data.stringValue << std::endl;
return 0;
}
说明
共用体定义:定义了一个名为 Data 的共用体,包含三个成员:intValue(整型)、floatValue(浮点型)和 stringValue(字符数组)。
创建共用体变量:创建一个 Data 类型的变量 data。
使用共用体成员:
首先将 intValue 赋值为 42,并输出。
然后将 floatValue 赋值为 3.14,并输出。
接着将 stringValue 赋值为 “Hello”,并输出。
注意事项:由于共用体的特性,只有最后赋值的成员是有效的。当访问 data.intValue 或 data.floatValue 时,结果是不确定的,因为它们与 stringValue 共享同一块内存。
枚举 (enum): 定义一组命名的整数常量。
#include <iostream>
// 定义一个枚举类型,用于表示星期几
enum Day {
Sunday, // 0
Monday, // 1
Tuesday, // 2
Wednesday, // 3
Thursday, // 4
Friday, // 5
Saturday // 6
};
int main() {
// 使用枚举类型定义变量
Day today = Wednesday;
// 输出今天是星期几
std::cout << "今天是星期: " << today << std::endl;
// 使用 switch 语句根据枚举值输出具体的星期几
switch (today) {
case Sunday:
std::cout << "今天是星期天" << std::endl;
break;
case Monday:
std::cout << "今天是星期一" << std::endl;
break;
case Tuesday:
std::cout << "今天是星期二" << std::endl;
break;
case Wednesday:
std::cout << "今天是星期三" << std::endl;
break;
case Thursday:
std::cout << "今天是星期四" << std::endl;
break;
case Friday:
std::cout << "今天是星期五" << std::endl;
break;
case Saturday:
std::cout << "今天是星期六" << std::endl;
break;
default:
std::cout << "无效的星期" << std::endl;
break;
}
return 0;
}```
说明
枚举定义:定义了一个名为 Day 的枚举类型,用于表示星期几。每个枚举值从 0 开始自动递增。
使用枚举类型:在 main 函数中,定义了一个 Day 类型的变量 today,并将其赋值为 Wednesday。
输出枚举值:输出枚举变量的值,其实是对应的整数值(在这里是 3)。
使用 switch 语句:通过 switch 语句,根据 today 的值输出具体的星期几。