7.26

静态内存分配:分配大小固定的内存

动态内存分配:在程序执行过程中动态分配或回收存储空间

空间的申请

在C语言函数库中的malloc()函数可用于申请 指定字节数的内存空间

      void *malloc(unsigned size)

调用malloc()函数时,通过参数size指定所需申请空间字节数,通过函数的返回值得到所申请空间的首地址。如果系统 所剩余的连续内存不满足要求,函数返回NULL指针,表示申请失败。

malloc()函数所返回的值是指向目标的地址,在实际编程过程中可以通过强制类型转换将该值转换成所要求的的指针类型,然后将它赋予同类型的指针变量,以后就可以通过该指针变量按照所定义的类型实现 对其所指向的目标元素的访问。

double *p;
……
p=(double *)malloc(10*sizeof(double))

其中sizeof运算符计算出每一个double型数据所占据的内存单元数,如果p得到的返回值为非NULL的 指针,就得到能连续存放10个double型数据的内存空间,就可以 通过指针表达式,p,p+1,…,p+9按照double型数据所申请到的空间中的每个数据元素进行访问。

空间的释放

malloc()函数配对使用的另一个函数时free()函数

      void free(char *p)

该函数用于释放由malloc()函数申请的内存空间,被释放的空间可以被malloc()函数在下一次申请时继续使用。

其参数p必须是先前调用malloc函数或calloc函数(另一个动态分配存储区域的函数)时返回的指针。

链表:用一组任意的存储单元存储线性表元素的数据结构。

链表的基本构成单元是结点(Node)

typedef struct node
{
    char name[20];        //用来存储姓名
    struct node *link;    //用来存储其直接后继
}stud;

这样就定义了一个单链表结点结构。定义好链表的结点结构之后,在程序运行时,就可以申请一个结点,然后给数据域中存储适当的数据,如果有后继结点,则把指针域指向其直接后继;若没有,则置为NULL。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值