1、什么是结构体
所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。
结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构
struct 结构体类型名{类型名 成员名;类型名 成员名;……},先声明结构体类型,再定义结构体变量名。声明结构体类型,不分配空间,定义结构体类型变量,就要分配内存空间。
2、结构体的作用
结构体可以定义自己的数据类型,实现复杂的数据类型
3、结构体的使用
#include
using namespace std;
/* struct是C语言中用来定义一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构体。
C语言中的struct是用户自定义数据类型(User Defined Type),它是没有权限设置的,它只能是一些变量的集合体,虽然可以封装数据却不可以隐藏数据,而且成员不可以是函数。
struct用法和用int定义整型变量一样,struct就是在程序编辑初要声明的结构体变量。
*/
//这种定义的方式是直接定义了一个结构体数组,数组名为Stud大小为5 内容为 {{1,"张斌","男","9001"},{2,"刘丽","女","9021"},{3,"赵武","男","9031"}}
//方式一
struct {
int no ;//学号
char name[8];//姓名
char sex[3];//性别
char Class[5];//班级号
}Stud[5]{{1,"张斌","男","9001"},{2,"刘丽","女","9021"},{3,"赵武","男","9031"}};
//这种定义的方式是定义了一个结构体数组类型,数组类型名为Student大小为,之后就可以使用Student为类型名定义变量/数组,
//定义变量 struct Student student;
//定义数组 struct Student stu1[5] = {{1,"张斌","男","9001"},{2,"刘丽","女","9021"},{3,"赵武","男","9031"}};
//这种方式也可同struct{.....}XXX变量名{{}...{}}一样定义一个结构体数组在后面可直接在代码使用
//方式二 ,方式三 ,方式二和方式三可以综合一起定义 以下就是综合的方式
struct Student{
int no ;//学号
char name[8];//姓名
char sex[3];//性别
char Class[5];//班级号
}Stu[5]{{1,"张斌","男","9001"},{2,"刘丽","女","9021"},{3,"赵武","男","9031"}};
int main(){
cout<< "hello Data structure and algorithm"<<endl;
cout<< "structure" <<endl;
cout<<"----------方式一-------------";
for(int i = 0;i < 3 ; i++){
cout<<Stud[i].no <<endl;
cout<<Stud[i].name <<endl;
cout<<Stud[i].sex <<endl;
cout<<Stud[i].Class <<endl;
}
cout<<"----------方式二-------------";
for(int i = 0;i < 3 ; i++){
cout<<Stu[i].no <<endl;
cout<<Stu[i].name <<endl;
cout<<Stu[i].sex <<endl;
cout<<Stu[i].Class <<endl;
}
struct Student stu1[5] = {{1,"张斌","男","9001"},{2,"刘丽","女","9021"},{3,"赵武","男","9031"}};
cout<<"----------方式三-------------";
for(int i = 0;i < 3 ; i++){
cout<<Stu[i].no <<endl;
cout<<Stu[i].name <<endl;
cout<<Stu[i].sex <<endl;
cout<<Stu[i].Class <<endl;
}
cout<<"----------方式四-------------";
struct Student stu2 = {3,"赵武","男","9031"};
cout<<stu2.no <<endl;
cout<<stu2.name <<endl;
cout<<stu2.sex <<endl;
cout<<stu2.Class <<endl;
return 0;
}
/*
本程序编写过程中出现过的问题
1、定义数组结构时定义的数组大小要比实际大小大1个 char sex[3]; 我原本定义为char sex[2];
程序编译时报 Sequential_structure.cpp [Error] initializer-string for array of chars is too long [-fpermissive]
字符数组初始化时,数组大小一定要大于字符串长度+1,否则编译错误。
字符串数组最后有\0。
*/