编程笔记:结构体

编程笔记:结构体

一、结构体概念

结构体(struct)是一种能将不同类型数据组合在一起的数据集合。例如学生信息包含学号(字符串)、姓名(字符串)、年龄(整型)等不同类型数据,使用结构体可将这些数据作为一个整体处理,方便表示和操作相互关联但类型各异的数据。

二、结构体类型变量的定义

  1. 基本格式
struct 结构体类型名
{
    类型名1 成员名1;
    类型名2 成员名2;
   ......
    类型名n 成员名n;
};

其中,struct是结构体类型的标志,结构体名由用户自定义,规定了结构体类型的名称。成员名的命名规则与普通变量名相同。例如:

#include<..>
using namespace std;
struct student{
    char name[20];  // 姓名,字符数组类型,长度为 20
    string num;     // 学号,字符串类型
    char sex;       // 性别,字符类型
    int age;        // 年龄,整型
    char address[30];  // 家庭住址,字符数组类型
};
  1. 注意事项
    定义结构体类型时,编译系统仅知晓该类型的组成结构,不会分配内存空间。只有在定义结构体类型变量时,系统才会为变量分配相应的存储空间。

三、声明结构体变量

  1. 先定义结构,再说明结构变量
struct Stu{
    char name[20];
    int num;
    char sex;
    int age;
    char address[30];
};
struct Stu boy1, boy2;

先定义了Stu结构体类型,然后声明了boy1boy2两个Stu结构类型的变量。
2. 在定义结构类型的同时说明结构变量

struct stu{
    int num;
    char name[20];
    char sex;
    float score; 
}boy1, boy2;

这种方式在定义结构体类型的同时直接声明了boy1boy2两个变量,一般形式为:

struct 结构名
{
    成员表列
}变量名表列;
  1. 直接说明结构变量
struct{
    int num;
    char name[20];
    char sex;
    float score; 
}boy1, boy2;

此方式未先定义结构体类型名,直接声明了boy1boy2两个匿名结构体类型的变量。这种方式定义的结构体类型不能在其他地方再次使用。

四、结构体变量成员的引用

  1. 赋值操作
    可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。
  2. 成员引用形式
    引用结构体变量中的成员使用“结构体变量名.成员名”的形式,其中“.”是成员运算符。例如:student s1; cin >> s1.name;,这里namestudent结构体变量s1的成员。
  3. 嵌套结构体成员引用
    若成员本身也是结构体类型,则需使用多个成员运算符一级一级地找到最低一层的成员。
  4. 输入输出限制
    不能将一个结构体变量作为一个整体进行输入和输出,只能对结构体变量中的各个成员分别进行输入和输出。
  5. 运算操作
    对结构体变量的成员可以像普通变量一样进行各种运算,也可以引用结构体变量成员的地址以及结构体变量的地址。例如:cout << &s1 << endl;输出结构体变量s1的地址。

五、结构体数组

  1. 概念
    结构体数组是由结构体数据类型的变量组成的数组。数组中的每个元素都是结构体变量,且所有结构体元素的基本数据类型相同。它可实现结构体类型的多维数组,能存储相关信息,灵活有序地组织数据。
  2. 定义方式
    在定义结构体变量时增加方括号指示其为数组。例如:
struct student // 定义结构体
{
    char name[20];
    int num;
    char sex;
    int age;
    char address[30];
}stu_arr[30];

这里stu_arr[30]表示一个结构体数组,由 30 个student结构体变量组成,每个学生结构体变量有 5 个属性:名字、学号、性别、年龄和家庭住址。
3. 初始化方法
- 静态初始化

struct student stu_arr[3] = {
    {"Aaa", 01, 20, 'g', "china"},
    {"Bbb", 02, 22, 'g', "china"},
    {"Ccc", 03, 18, 'g', "China"}
};
  1. 访问方式
    使用下标符访问数组元素的成员,如stu_arr[2].name表示数组第三个元素(下标从 0 开始)的name属性。
  2. 用途
    常用于存储同类型、类似属性的多条记录,如学生成绩管理系统中存储学生基本信息和成绩,方便统计和排序;也可用于图形描述,如用结构体数组元素描述人脸特征(眼睛位置、嘴巴位置等)并绘图形成人脸图。
  3. 优点
    对于非线性的多项数据存储,结构体数组比普通数组更便捷。它能更有效地组织和定位多项数据,提高操作效率;更易于维护内存中的数据,无需考虑内存单元关系;且更加灵活,可按需自由扩展。

六、结构体复习

C++结构体由一系列相同或不同类型的数据构成数据集合,可视为一种变量类型。定义形式有多种:

  1. 先定义结构体类型再定义变量:
struct 类型名{
    数据类型1 成员变量1;
    数据类型2 成员变量2;
   ......
}[结构体变量名];  // 结构体变量名可选
  1. 定义结构体类型同时定义变量:
struct 类型名{
    数据类型1 成员变量1;
    数据类型2 成员变量2;
   ......
}结构体变量名;
  1. 直接定义结构体变量(匿名结构体类型):
struct{
    数据类型1 成员变量1;
    数据类型2 成员变量2;
   ......
}结构体变量名;

结构体可以定义为数组,数组元素为结构体变量,可整体赋值,也可访问结构体成员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值