C语言中不允许动态数组类型,但C提供了一些内存管理函数,使用其可以动态的分配内存空间。常用的内存管理函数有以下三个:

(1)分配内存空间函数malloc、calloc;

(2)释放内存空间函数free;

1、malloc函数

原型:void *malloc(unsigned int size);

其作用是在内存的动态存储区中分配一个长度为size的连续空间(size是一个无符号函数)。

此符号的返回值是一个指向分配域起始地址的指针(类型为void)。

若此函数未能成功的执行,则返回空指针(NULL)。

2、calloc函数

原型:void *calloc(unsigned n,unsigned size);

作用:在内存的动态储存区中分配n个长度为size的连续空间。

函数返回一个指向分配域起始地址的指针;

若分配不成功,则返回NULL值。

用calloc函数可以为一维数组开辟动态储存空间,n为数组元素个数,每个元素长度为size。

3、free函数

原型:void free(void *p)

作用:释放由p指向的内存区,使这部分内存区能被其他变量使用。p是最近一次调用calloc或malloc函数时返回的值。

free函数无返回值。

 链表

链表是一种常见的重要的数据结构,是动态地进行储存分配的一种结构。

头指针:存放一个地址,该地址指向第一个元素。

结点:用户需要的实际数据和链接节点的指针。

例:

  1. #include "StdAfx.h"
  2. #include<stdio.h>
  3. #include<string.h>
  4. struct student
  5. {
  6. long num;
  7. float score;
  8. struct student *next;
  9. };
  10. void main()
  11. {
  12. struct student a,b,c,*head;
  13. a.num=10101;
  14. a.score=98.5;
  15. b.num=10102;
  16. b.score=88.5;
  17. c.num=10103;
  18. c.score=78.5;
  19. head=&a;
  20. a.next=&b;
  21. b.next=&c;
  22. c.next=NULL;
  23. do
  24. {
  25. printf("%ld%5.1f\n",head->num,head->score);
  26. head=head->next;
  27. }
  28. while(head!=NULL);
  29. }

 

posted on 2019-02-17 22:37 巫师笔记 阅读() 评论() 编辑 收藏

版权声明:本文为lvfengkun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lvfengkun/p/10392829.html