目录
基本数据类型:int char float double short long unsigned (一个变量)
数组:很多个变量 只能保存一种类型的数据
结构体:也是一种数据类型,这种数据类型,是程序员自己定义。可以包含多种数据类型。
struct students ------------------->struct students 就是一种数据类型 int char float
{
? char name[12]; ---------------->结构体的成员“;”结束
? int number;
? char sex[5];
};-------------------------------->结构体以“;”结束
struct students 就是一种数据类型 int char float
Struct 定义结构体的关键字
Students 结构体名 (自己命名)
Int a;float b;
struct students student1;
结构体变量名也是自己命名的。
struct students //int float
{
char name[12];
int number;
char sex[5];
}student2;
struct
{
char name[12];
int number;
char sex[5];
}student2;
在声明结构体变量的时候进行初始化
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 };
在{}里面,数据初始化的顺序,应该跟结构体成员的顺序保持一致。
对于结构体变量的引用不能采用整体。
“.”---->成员运算符
结构体变量.成员名
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;
}
结构体数组的定义和初始化
跟结构体变量的这个定义是一样的。
初始化也是一样。
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].成员名。
数组的存放都是连续的内存。一个结构一个结构的去存放。(注意)
定义及初始化:
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);
定义:
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
原文:https://www.cnblogs.com/qzdd/p/12340396.html