C高级(二)

目录

结构体

字节对齐

大端小端存储

堆区内存分配

结束


前面我们讲解了指针以及函数,本章则重点了解一下结构体以及相关的作业示例

  • 结构体

结构体:是一种构造函数类型,可以用于存储多个不同类型的数据,在内存中连续存放。

成员:一个结构体中的一个数据称作结构体的成员,一个结构体可以拥有多个成员。

例如:我们在日常生活中描述一个人,其有姓名、性别、身高、体重等

当我们使用C语言来定义时则需要多个不同类型的变量:

char name[20];

char sex[10];

int high;

int weigh;

这种情况我们就可以使用结构体去定义。

  1. 结构体的定义步骤:
  • 先定义结构体类型。
  • 通过该类型定义结构体变量。

struct 自定义结构体类型名 {

成员列表;

....

};

注意:成员定义  同变量定义 一致

 

图中便是结构体的基本定义,其类型为stuct people_a类型。

        2.通过类型定义结构体变量:

                        使用定义的结构体类型来定义结构体变量并初始化。

例如

        

 

相同类型的结构体变量可以直接赋值。

例如:

 

在结构体定义类型时,一般会进行结构体别名定义:

typedef关键字就是取别名。

 

在后续的结构体变量定义中我们可以直接使用别名,对结构体变量进行定义。

 

  • 结构体成员的访问:

            1. 结构体变量.成员名

 

          2.结构体指针:一个指针指向一个结构体首地址

                                结构体指针->成员名

 

结构体数组:

一个数组 其元素是 结构体

结构体指针数组:

一个数组其元素是结构体指针。

字节对齐

        1.自动字节对齐:编译器根据变量的类型选择对应的对齐方式

例如:int 4, short 2, char 1,应当以4字节对齐。

                #pragma pack ()   表示采用自动字节对齐。

        2.强制字节对齐:#pragma pack (2) 表示强制后续的结构体类型 均 以2字节对齐

大端小端存储

多字节数据: 在基本数据类型中 不能用1个字节存放的数据 都称作多字节数据
    short  int   float ;

大小端:表示字节序,由CPU构架决定的

        小端存储: 低地址 存储高位数据   例如:X86 架构CPU、家用电脑 PC。

        大端存储 :  低地址 存储低位数据    例如:ARM 架构CPU 、手机 、 网络字节序。

堆区内存分配

1.申请堆区内存:

        void *malloc(size_t size);

    参数返回值: size表示大小位字节。
     void * : 万能指针。
              可能的值:  NULL  内存申请失败 。
              其他值申请成功即堆区地址。

2.释放内存:

        void free(void *ptr);
                    ptr: 表示申请的堆区地址。

在释放内存的时候有可能会出现内存泄漏的问题。

内存泄漏:  丢失堆区指针, 无法free。

3.堆区内存使用情形:

            1) 开辟较大的内存空间。
            2) 使用周期较长变更较多,跨函数使用。

结束

        C语言就大致给大家讲到这里,由问题或者不对的地方可以私信给小编,小编及时改正,毕竟我也是在学习中。。。。。。事情较多,更新随缘,谢谢大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值