TOP

C语言入门教程 (二十) 堆和链表
2012-11-10 17:53:42 】 浏览:522
Tags:语言 入门教程 二十

我们经常在题目中有要求,输入一个整数,然后以这个整数作为数组的元素个数,下面的程序代码是错误的。
int n,array[n];
scanf(%d,&n);
在Turbo C中,不允许出现动态数组。那么如果必须需要这样时,就只能使用链表了。

一、堆
堆是一种动态存储结构,实际上就是数据段中的自由存储区,它是C语言中使用的一种名称,常常用于动态数据的存储分配。堆中存入一数据,总是以2字节的整数倍进行分配,地址向增加方向变动。堆可以不断进行分配直到没有堆空间为止,也可以随时进行释放、再分配,不存在次序问题。
所谓动态数组是指在程序运行期间确定其大小的,如常用到的动态数组,它们是在程序执行过程中动态进行变化的,即在程序开始部分没有说明大小,只有在程序运行期间用堆的分配函数为其分配存储空间,分配的大小可根据需要而定,这些数据使用过后,可释放它们占用的堆空间,并可进行再分配。
堆和栈在使用时相向生长,栈向上生长,即向小地址方向生长,而堆向下增长,即向大地址方向,其间剩余部分是自由空间。使用过程中要防止增长过度而导致覆盖。
一般的程序我们都是使用小内存模式,它的内存分配如下:
________________
| 代码段 |
|
C语言入门教程 (二十) 堆和链表 https://www.cppentry.com/bencandy.php?fid=45&id=2728

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言入门教程 (十九) 联合和枚举 下一篇C语言入门教程 (二十一) 位操作