您现在的位置是:亿华云 > 人工智能
EasyC++,结构体初探
亿华云2025-10-02 18:42:11【人工智能】0人已围观
简介大家好,我是梁唐。这是EasyC++系列的第13篇,咱们来聊聊C++当中的结构体。想要追求更好阅读体验的同学,可以点击文末的「阅读原文」,访问github仓库。结构体定义结构体数组可以存储多个同类型的
大家好,构体我是初探梁唐。
这是构体EasyC++系列的第13篇,咱们来聊聊C++当中的初探结构体。
想要追求更好阅读体验的构体同学,可以点击文末的初探「阅读原文」,访问github仓库。构体
结构体
定义结构体
数组可以存储多个同类型的初探变量,但如果我们想要存储多个不同类型的构体变量呢?比如说我们想要存储一个学生的姓名、年龄、初探性别、构体考试分数,初探这些变量可能string,构体 int, float都有,显然就不能使用数组了。初探
为了满足这样的构体存储要求,我们可以使用C++当中的结构体(struct)。在同一个结构体当中,我们可以定义许多种不同类型的变量,就可以满足我们各种各样的需求了。香港云服务器如果我们想要存储多个这样的内容,还可以将它定义成数组。
结构体和类已经很接近了,所以理解结构体对于理解面向对象非常有帮助。虽然算法竞赛当中一般用不到面向对象,但是对于开发者来说,面向对象可以说是必学的内容。C++ primer中说,结构体是C++ OOP(面向对象编程)的基石。
我们使用关键字struct来定义一个结构体:
struct student { string name; bool gender; double scores; };表示定义了一个结构体,它的类型名是student,花括号当中括起来的内容是结构体的成员变量。注意student是类型名,也就是说我们可以用它来定义出student类型的变量:
student xiaoming; student john;我们可以用.来访问结构体内部的元素:
cout << john.name << endl;struct的定义有两种写法,既可以写在main函数外部,源码下载也可以写在main函数内部。如:
// 写法1 struct student { string name; bool gender; double scores; }; int main() { // do something return 0; } // 写法2 int main() { struct student { string name; bool gender; double scores; }; // do something return 0; }逻辑上两种方式完全一样,只是第一种方式student类型可以被任何函数使用,但如果写在main函数内部,就只能在main函数内部使用。
结构体变量也可以定义在函数内部定义,定义在外部的变量被所有函数所共享,也就是全局变量。C++ primer当中提倡尽量使用外部结构体。
初始化方式
我们可以和数组一样,在花括号内使用逗号进行分隔,如:
student xiaoming = { "xiaoming", 1, 3.5};编译器会按照顺序,分别将"xiaoming"赋值给name,1赋值给gender,3.5赋值给score。我们也可以使用C++11的列表初始化方式省略掉中间的等于号:
student xiaoming { "xiaoming", 1, 3.5};结构体数组
定义了结构体之后,我们还可以像是基础变量类型一样定义结构体数组。
struct student { string name; bool gender; double scores; }; student sts[10];对于结构体数组来说,我们也可以使用列表初始化方式来初始化,由于结构体本身的初始化就用到花括号,所以数组的初始化会使用到花括号的嵌套,像是高防服务器这样:
student sts[2] = { { "xiaoming", 1, 3.6}, { "john", 1, 5.2} };很赞哦!(87782)