C++编程入门(二) 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

结构

在《C++基础编程》的基础上,我们这门课程将学习C++面向对象的精髓:封装性,继承性和多态性。那么就要先从结构开始。结构很类似于数组,也是一种自定义数据类型,但区别是数组里面所有的元素都是同一个类型的,而结构里面可以包含不同类型的元素。

结构类型的定义方式为:

struct 结构类型名称{
   结构成员表
};

结构类型变量的定义方式与int型变量的定义一样(下面第1行),也可以与结构类型定义放在一起(下面第2行开始):

结构类型名 结构类型变量名;
struct 结构类型名称{
   结构成员表
}结构类型变量名列表;

结构类型变量可以是指针,也可以是数组。举个栗子:

struct student{
    int id;
    char \*name;
    int age;
    char sex;
    float score;
}stu1,stu2,\*pstu,stu[10];

上面是的代码定义了结构类型student,同时定义了它的四个变量,其中*pstu是指向结构student的指针,数组stu有10个元素,每个元素都是一个student变量。结构简单来说就是一种数据类型,所以可以定义一个包含10个结构变量的数组stu。

结构成员的表示和赋值

所谓结构成员,举例来说,就是上例student类型的name、age等属性。成员可以是学习过的各种数据类型:int、char、double、float、bool、数组、指针、类,还可以是另一个结构类型等等。

上面定义了student类型的变量stu1,那么变量stu1就有五个成员,分别是id、name、age、sex、score,用变量名.成员名就可以获取到变量的成员。而如果是指针pstu的话,获取方式就是变量指针->成员名

获取到成员了,自然能够进行赋值咯,这样才有意义嘛。当然也可以初始化,一切用例子说明:

struct student{
    int id;
    char *name;
    int age;
    char sex;
    float score;
}stu1={34,"xiaoming",20,'0',96.5},stu2,stu[10];

stu2.id=35;
stu2.name="xiaohong";
stu2.age=19;
stu2.sex='1';
stu2.score=100;

student \*pstu=&stu1;

很好理解,程序同样定义了结构student,并同时定义了student类型的两个变量stu1和stu2,以及一个数组stu。

第7行对stu1进行初始化,方式就是大括号括起来,里面是逗号隔开的成员列表

第9到13行对stu2的成员进行赋值。

第15行定义指向student的指针pstu,并初始化为指向stu1。

在右侧代码框中编写程序:定义student类型的数组,长度为3,并提示用户输入3个学生的信息。最后输出这3个学生的姓名和成绩。