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

 

转载于:https://www.cnblogs.com/tiantiancode/p/11131794.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值