16-结构体

结构体

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 afloat 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);

注意:结构体同样可以包含另一个结构体类型

 1 #include<stdio.h>
 2 
 3 struct data
 4 {
 5     int year;
 6     int month;
 7     int day;
 8 };
 9 
10  
11 struct students
12 {
13     char name[12];
14     int number;
15     char sex[5];
16     struct data birthday;
17 }student1 = { "Meung", 28, "nan", 1995, 5, 20 };
18 
19  
20 int main()
21 {
22     printf("%s\n",student1.name);
23     printf("%d\n", student1.number);
24     printf("%s\n", student1.sex);
25     printf("%s\n", student1.birthday.year);
26 
27     return 0;
28 }

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

猜你喜欢

转载自www.cnblogs.com/tiantiancode/p/11131794.html