文章目录
前言
一、结构体
1.1 结构体类型的声明
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
struct tag
{
member-list;
} variable-list;
提示:匿名结构体类型是一种特殊的声明:在声明结构的时候,可以不完全的声明。
1.1.1 结构体创建示例
#include <stdio.h>
struct Student
{
char name[20];
int age;
char sex[5];
char id[20];
}s2,s3,s4;
struct Student s5;
int main()
{
struct Student s1 = { "张三",20, "男" , "中文系三班21号" };
return 0;
}
1.1.2 特殊结构体创建示例
#include <stdio.h>
struct
{
char name[20];
int age;
char sex[5];
char id[20];
}s1,s2,s3,s4;
struct
{
char name[20];
int age;
char sex[5];
char id[20];
}*p1,*p2,*p3,*p4;
int main()
{
return 0;
}
1.2 结构的自引用
1.2.1 结构的自引用语法格式(一)
struct Node
{
int data;
struct Node* next;
};
1.2.1 结构的自引用语法格式(二)
typedef struct Node
{
int data;
struct Node* next;
}Node;
1.3 结构体变量的定义和初始化
1.3.1 结构体变量的定义
#include <stdio.h>
struct Stu
{
char name[20];
int age;
char sex[5];
char id[20];
}s2 = { "王五", 14 , "男","数学系一班24号" }, s3 = { "王翠",16,"女","历史系四班22号" },
s4 = { .age = 10, .name = "李四", .id = "中文系一班4号",.sex = "男" };//全局变量定义
struct Stu s5;
int main()
{
struct Stu s1 = { "张三",20, "男" , "中文系三班21号" };//初始化;//局部变量定义
printf("%s %d %s %s\n",s2.name, s2.age, s2.sex , s2.id);
return 0;
}
结果如下:
1.3.2 结构体变量的初始化
#include <stdio.h>
struct Stu
{
char name[20];
int age;
char sex[5];
char id[20];
}s2 = { "王五", 14 , "男","数学系一班24号" }, s3 = { "王翠",16,"女","历史系四班22号" },
s4 = { .age = 10, .name = "李四", .id = "中文系一班4号",.sex = "男" };//全局变量定义
struct Class
{
char name1[20];
struct Stu s;
int arr[10];
};
int main()
{
struct Stu s1 = { "张三",20, "男" , "中文系三班21号" };//初始化;//局部变量定义
printf("%s %d %s %s\n", s2.name, s2.age, s2.sex, s2.id);
struct Class c1 = { "中文班级",{"张张",22, "男" , "中文系三班26号"} ,{1 ,2 ,3 ,4 } };
printf("%s %s %d %s %s\n", c1.name1, c1.s.name, c1.s.age, c1.s.sex, c1.s.id);
int i = 0;
int sz = sizeof(c1.arr) / sizeof(c1.arr[0]);
for (i = 0; i < sz; i++)
{
printf("%d ", c1.arr[i]);
}
return 0;
}
结果如下: