1.1 结构体的概念
结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。它是一种数据类型。
1.2 C中的结构体
在C语言中,结构体是复合数据类型的一种,同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的数据类型。
结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。
- 注意:在C语言中,结构体不能包含函数
1.3C++中的结构体
在C中认为,数据和数据操作是分开的;然而在c++中,数据和数据对象是一个整体,不应该分开,这就是struct在c和c++两个时代的差别。
在C++中struct得到了很大的扩充:
1.struct可以包括成员函数
2.struct可以实现继承
3.struct可以实现多态-注意:在C++中,结构体可以包含函数。
1.4结构体的三种定义方式
- 先定义结构体类型,再定义结构体类型变量:
> struct stu
> {
> char name[20];
> char sex;
> long num;
> float score[3]; / * 三科考试成绩* /
> };
> struct stu student1;/ * 定义结构体类型变量* /
> // 用此结构体类型,可以定义更多的该结构体类型变量
- 定义结构体类型同时定义结构体类型变量:
> struct data
> {
> int day;
> int month;
> int year; } time1;
> struct data time3,time4;
> // 用此结构体类型,可以定义更多的该结构体类型变量
- 直接定义结构体类型变量:
> struct
> {
> char name[20];
> char sex;
> long num;
> float score[3]; } person1,person2;
> 除直接定义外,不能再定义该结构体类型变量。
注意:在C中定义一个结构体类型要用typedef:
> typedef struct Student { int a; }Stu;
Stu stu1;
如果没有typedef就必须用struct Student stu1;来声明 这里的Stu实际上就是struct Student的别名。
另外这里也可以不写Student(于是也不能struct Student stu1;了)
> typedef struct { int a;
> > }Stu;
1.5 结构体struct与类class的区别
- 默认的继承访问权。class默认的是private,strcut默认的是public。
- 默认的访问权限:struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的。
- 关键字class可用于定义模板参数**,关建字“struct”不用于定义模板参数
参考文章:
https://blog.csdn.net/alidada_blog/article/details/83419757
https://www.cnblogs.com/ransn/p/5132352.html