C高级(二)

  • Post author:
  • Post category:其他



目录


结构体


字节对齐


大端小端存储


堆区内存分配


结束


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


  • 结构体

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

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

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

当我们使用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语言就大致给大家讲到这里,由问题或者不对的地方可以私信给小编,小编及时改正,毕竟我也是在学习中。。。。。。事情较多,更新随缘,谢谢大家。



版权声明:本文为weixin_53550371原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。