C语言基础之结构体五

111 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第六天,点击查看活动详情

结构体与共用体

接上篇,继续学习结构体与共用体~

知识点6--动态存储分配

前言

在数组里,数组的长度时预先定义好的,在整个程序中固定不变。C语言中不允许动态数组类型。

例如:int a[n]; //这样是不对滴!

用变量表示长度,想对数组的大小作动态说明,这是错误的。

但是在实际的编程中,往往会发生所需的内存空间取决于实际输入的数据,而无法预先确定其大小。

为解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态的分配内存空间,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。

常用的内存管理函数有以下三个:

  1. 分配内存空间函数malloc、calloc
  2. 释放内存空间函数free

malloc函数

函数原型为

void *malloc(unsigned int size);
  1. 其作用时在内存的动态存储区中分配一个长度为size的连续空间(size是一个无符号数)
  2. 此函数的返回值是一个指向分配域起始地址的指针(类型为void)
  3. 如果此函数未能成功的执行(例如内存空间不足,则返回空指针NULL)

calloc函数

函数原型为

void *calloc(unsigned n, unsigned size);
  1. 其作用时在内存的动态存储区中分配n个长度为size的连续空间。
  2. 函数返回一个指向分配域起始地址的指针
  3. 如果分配不成功,返回NULL
  4. 用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为size。

free函数

函数原型为

void free(void *p);
  1. 其作用是释放由p指向的内存区,是这部分内存区能被其他变量使用
  2. p是最近一次调用calloc或malloc函数时返回的值
  3. free函数无返回值

声明

小编是跟着b站上的小甲鱼视频学习的,希望每天都能进步一点点!!

链接附上:C语言学习之小甲鱼视频链接