LinuxC

本文介绍了C语言中结构体的定义与使用,包括如何访问结构体成员,字节对齐规则,结构体数组的创建,以及共用体的概念。同时讲述了malloc、memset、free和realloc等内存管理函数的作用和用法。
摘要由CSDN通过智能技术生成

结构体

结构体定义:

包含C语言中所有的简单的数据类型 以及复杂数据类型的一种复合数据类型

Struct +结构体名

{

数据1;

数据2;

......

};

结构体定义好只是一个数据类型,如果要访问内部的成员,需要用到结构体变量或者结构体指针。

struct a;/struct *p=&a

字节对齐

计算结构体的大小

Struct people

{

Char name[29];

Int age;

Double height;

};---》48

在计算结构体大小的时候,先看结构体内部成员的数据类型有没有超过4个字节,如果没有,就按照最大的数据类型进行对齐,如果超过4字节,就按照4字节对齐。

结构体数组

数组:同一类型元素的集合。

结构体数组:是一个数组,只不过数据的类型是结构体类型

Struct people

{

Char name[20];

Int age;

};

Struct people a,b,c;

Struct people Arr[3] = {{“aa”,1},{“bb”,1},{“cc”,1}};--->结构体数组

访问内部元素:arr[0].name;arr[0].age;

共用体

共用同一片空间,先找最大的数据,那么共用体的大小就是最大的数据类型的大小。

共用体每个元素的地址都相同

#include <stdlib.h>

void *malloc(size_t size);

在堆区申请空间

参数:申请的空间大小

返回值:成功返回空间首地址,失败返回NULL

因为malloc的返回值是void *,所以在申请空间成功之后,根据所申请到的空间进行强制类型转换

Int * p= (int *)malloc(sizeof(int)*5);

#include <string.h>

void *memset(void *s, int c, size_t n);

作用:清空空间(任何空间)

参数1:空间的首地址

参数2:用来清空空间的字符

参数3:清空空间的大小

Memset(p,0,sizeof(int)*5);

void free(void *ptr);

清空空间

参数:空间的首地址

 void *realloc(void *ptr, size_t size);

参数1:空间的首地址

参数2:扩容的大小

返回值:扩容后的空间首地址

如果malloc之后的放不下,那么重新开辟空间进行存放,空间的首地址会改变,原本malloc的内容会被复制

如果放得下,那么就在malloc空间之后进行开辟,空间首地址不变

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值