结构体

1.什么是结构体

结构体是一种专门设计用来存储不同数据类型元素集合

结构体与数组的对比:

1)都由多个元素组成

2)各个元素在内存中的存储空间是连续的

3) 数组只能由多个相同类型的数据构成, 结构体可以由多个不同类型的数据构成。


2.结构体的格式

 结构体内部的元素,也就是组成成分,我们一般称为"成员"。

结构体的一般定义形式为:

   struct 结构体名{

     类型名1 成员名1;

     类型名2 成员名2;

      ……

     类型名n 成员名n;   

 };

 struct是关键字,是结构体类型的标志。

例如,定义一个Car

struct Car {

    int wheels; // 轮子数

    int speed; // 速度

};

定义结构体变量:

struct Car {

    int wheels; // 轮子数

    int speed; // 速度

}car;//直接定义变量

//单独定义结构体变量

struct Car car;

 

3.结构体初始化与使用

初始化:

struct Car {

    int wheels; // 轮子数

    int speed; // 速度

}car;

car = {4,250};

//使用:

printf("%d",car.wheels);

 

4.结构体注意点

结构体类型的作用域

 1> 定义在函数外面:全局有效(从定义类型的那行开始,一直到文件结尾)

 2> 定义在函数(代码块)内部:局部有效(从定义类型的那行开始,一直到代码块结束)

不允许对结构体进行自身递归定义。

结构体内可以包含别的结构体。

只有在定义结构体变量时才会进行内存空间分配。

 

5.结构体数组

跟结构体变量一样,结构体数组也有3种定义方式

struct Student {

    char *name;

    int age;

};

struct Student stu[5]; //定义1

 

struct Student {

    char *name;

    int age;

} stu[5]; //定义2

 

struct {

    char *name;

    int age;

} stu[5]; //定义3

上面3种方式,都是定义了一个变量名为stu的结构体数组,数组元素个数是5。

初始化:

struct {

    char *name;

    int age;

} stu[2] = { {"MJ", 27}, {"JJ", 30} };

也可以用数组下标访问每一个结构体元素,跟普通数组的用法是一样的。

 

6.结构体与函数

 如果结构体作为函数参数,只是将实参结构体所有成员的值对应地赋值给了形参结构体的所有成员

 修改函数内部结构体的成员不会影响外面的实参结构体。


7.结构体和联合体的区别

1)在任何同一时刻,union中只存放了一个被选中的成员,而struct的所有成员都在。

2)一个struct变量的总长度等于所有成员长度之和,而union变量的唱歌等于最长的成员的长度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值