原创博客,转载请注明出处!
1.简介
# C++提供一些基本的数据类型(int,float,double,char等),但由于程序处理的问题通常较复杂,基本的数据类型不能满足程序需要,因此C++允许用户根据需要自定义数据类型。C/C++的结构体是包含相同/不同数据类型数据项的组合项,关键字struct标识结构体。
2.结构体类型的声明
# 如果在文件开头声明结构体类型,则所有的函数利用该结构体类型定义变量。
# 如果在函数中声明结构体类型,则只有本函数可以使用该结构体类型定义变量。
1 struct 结构体类型名 2 { 3 成员名; 4 };
3.结构体类型变量的定义和初始化
#先声明结构体类型后定义结构体变量
1 struct Student 2 { 3 int age; 4 char sex; 5 }; 6 Student student1={11,‘女’};
注意:Student是类型名,student1是变量名。声明结构体类型的时候,编译器不分配内存;定义结构体变量的时候,编译器分配内存。
4.引用结构体变量的成员
# 通过成员运算符引用结构体变量的成员
1 // 定义结构体变量同时初始化 2 Student stu1={11,'女'}; 3 4 // 引用结构体变量成员 5 cout<<stu1.age<<endl;
# 通过指向结构体变量的指针引用结构体变量的成员
1 Student stu1={11,'女'}; 2 Student *p = &stu1; 3 cout<<p->age<<endl;
5.用结构体变量和指向结构体变量的指针构建链表
1 #include <iostream> 2 using namespace std; 3 4 // 结构体类型声明(链表结点) 5 struct Student 6 { 7 int num; 8 int age; 9 Student *next; 10 }; 11 12 void LinkedList() 13 { 14 // 学生结点1 15 Student stu1; 16 stu1.num=101; 17 stu1.age=21; 18 19 // 学生结点2 20 Student stu2; 21 stu2.num=102; 22 stu2.age=22; 23 24 // 学生结点3 25 Student stu3; 26 stu3.num=103; 27 stu3.age=23; 28 29 // 链表头结点; 30 Student *head=&stu1; 31 32 // 学生结点建立链接 33 stu1.next = &stu2; 34 stu2.next = &stu3; 35 stu3.next = NULL; 36 37 // 打印链表 38 Student *p=&stu1; 39 40 while(p!=NULL) 41 { 42 cout<<p->num<<endl; 43 p = p->next; 44 } 45 } 46 int main() 47 { 48 LinkedList(); 49 return 0; 50 } 51