C语言结构体
目录
结构体
1、什么是结构体
基本数据类型:int char float double short long unsigned (一个变量)
数组:很多个变量 只能保存一种类型的数据
结构体:也是一种数据类型,这种数据类型,是程序员自己定义。可以包含多种数据类型。
2、声明结构体
struct students ------------------->struct students 就是一种数据类型 int char float
{
char name[12]; ---------------->结构体的成员“;”结束
int number;
char sex[5];
};-------------------------------->结构体以“;”结束
struct students 就是一种数据类型 int char float
Struct 定义结构体的关键字
Students 结构体名 (自己命名)
3、结构体变量的声明
3.1、先声明结构体类型,再定义变量
Int a;float b;
struct students student1;
结构体变量名也是自己命名的。
3.2、在声明结构体的同时定义变量
struct students //int float
{
char name[12];
int number;
char sex[5];
}student2;
3.3、直接定义结构体变量
struct
{
char name[12];
int number;
char sex[5];
}student2;
4、结构体变量的初始化
在声明结构体变量的时候进行初始化
struct students student2 = { "Liangren", 30, "男" };
struct students
{
char name[12];
int number;
char sex[5];
}student1 = {"Meung",28,"男"};
struct students
{
char name[12];
int number;
char sex[5];
struct data birthday;
}student1 = { "Meung", 28, "nan", 1995, 5, 20 },
student2 = { "Hucheng", 20, "男", 2000, 6, 15 },
student3 = { "Gragon", 15, "男", 2005, 8, 16 };
在{}里面,数据初始化的顺序,应该跟结构体成员的顺序保持一致。
5、结构体变量的引用
对于结构体变量的引用不能采用整体。
“.”---->成员运算符
结构体变量.成员名
printf("%s\n",student1.name);
printf("%d\n", student1.number);
printf("%s\n", student1.sex);
注意:结构体同样可以包含另一个结构体类型
struct data
{
int year;
int month;
int day;
};
struct students
{
char name[12];
int number;
char sex[5];
struct data birthday;
}student1 = { "Meung", 28, "nan", 1995, 5, 20 };
int main()
{
printf("%s\n",student1.name);
printf("%d\n", student1.number);
printf("%s\n", student1.sex);
printf("%s\n", student1.birthday.year);
return 0;
}
6、结构体数组
结构体数组的定义和初始化
跟结构体变量的这个定义是一样的。
初始化也是一样。
struct students
{
char name[12];
int number;
char sex[5];
struct data birthday;
}student[3] ={
{ "Meung", 28, "nan", 1995, 5, 20 },
{ "Hucheng", 20, "男", 2000, 6, 15 },
{ "Gragon", 15, "男", 2005, 8, 16 } };
struct students student[3]={
{ "Meung", 28, "nan", 1995, 5, 20 },
{ "Hucheng", 20, "男", 2000, 6, 15 },
{ "Gragon", 15, "男", 2005, 8, 16 } };
引用:student[0].成员名。
7、结构体数组的存放
数组的存放都是连续的内存。一个结构一个结构的去存放。(注意)
8、结构体和指针
8.1指向结构体变量的指针。
定义及初始化:
struct students *p = &student1;
struct students *p;
p = &student1;
引用:
1用指针运算符去找到结构体变量,用成员运算符找到成员。(一定注意要加括号)
(*p).birthday.year
(*p).结构体成员 一定要加括号 “.”优先级最高
2用指向运算符去访问成员。
p->birthday.year
printf("%d\n", (*p).birthday.year);
printf("%s\n", (*p).sex);
printf("%s\n", (*p).name);
printf("%d\n", p->birthday.year);
printf("%s\n", p->sex);
printf("%s\n", p->name);
8.2 指向结构体数组的指针。
定义:
struct students *p = student;
struct students *p;
p = student;
p=student[0];
引用:
printf("%s\n", (p+1)->name); //whorld
printf("%s\n", (*(p + 1)).name); //whorld
鲸落于海,星沉于洼,风隐于密林,蝉鸣漏进夏至,想让世间所有温柔住进你眼里