- 2
- 0
- 约1.71千字
- 约 3页
- 2022-09-24 发布于湖南
- 举报
笔记 动态存储分配以及链表的概念
笔记动态存储分配以及链表的概念
笔记lowbar;动态存储分配以及链表的概念
用变量则表示长度,想要对数组的大小并作动态表明,这就是错误的.必须采用内存管理函数这些内存管理函数可以按须要动态地分配内存空间,也可以把不再采用的空间废旧姜味,为有效地利用内存资源提供更多了手段。
1.分配内存空间函数malloc调用形式:
(类型说明符*)malloc(size)
功能:在内存的动态存储区中分配一块长度为size字节的连续区域。函数的返回值为该区域的首地址。
“类型说明符”则表示把该区域用作何种数据类型。
(类型说明符*)表示把返回值强制转换为该类型指针。
“size”就是一个并无符号数。
pc=(char*)malloc(100);
则表示分配100个字节的内存空间,并强制性切换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针剥夺指针变量pc。
2.分配内存空间函数calloc
calloc也用作分配内存空间。调用形式:
(类型说明符*)calloc(n,size)
功能:在内存动态存储区中分配n块长度为“size”字节的已连续区域。函数的返回值为该区域的首地址。
(类型说明符*)用于强制类型转换。
calloc函数与malloc函数的区别仅是一次可以分配n块区域。比如:
ps=(struetstu*)calloc(2,sizeof(structstu));
其中的sizeof(structstu)厚边stu的结构长度。因此该语句的意思就是:按stu的长度分配2块已连续区域,强制性切换为stu类型,并把其首地址剥夺指针变量ps。
3、释放内存空间函数free调用形式:
free(void*ptr);
功能:释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,它指向被释放区域的首地址。被释放区应是由malloc或calloc函数所分配的区域。
【基准11.8】分配一块区域,输出一个学生数据。
structstu
intnum;
char*name;
charsex;
floatscore;
ps=(structstu*)malloc(sizeof(structstu));
ps-num=102;
ps-name=zhangping;
ps-sex=m;
ps-score=62.5;
printf(number=%d\nname=%s\n,ps-num,ps-name);
printf(sex=%c\nscore=%f\n,ps-sex,ps-score);
free(ps);
本例中,定义了结构stu,定义了stu类型指针变量ps。然后分配一块stu小内存区,并把首地址剥夺ps,并使ps指向该区域。再以ps为指向结构的指针变量对各成员赋值,用printf输入各成员值。最后用free函数释放出来ps指向的内存空间。整个程序涵盖了提出申请内存空间、采用内存空间、释放出来内存空间三个步骤,同时实现存储空间的动态分配。
可在第一个结点的指针域内存入第二个结点的首地址,在第二个结点的指针域内又存放第三个结点的首地址,如此串连下去直到最后一个结点。最后一个结点因无后续结点连接,其指针域可赋为0。这样一种连接方式,在数据结构中称为“链表”。
右图为最一直观链表的示意图。
图中,第0个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量。以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号num,姓名name,性别sex和成绩score等。另一个域为指针域,存放下一结点的首地址。链表中的每一个结点都是同一种结构类型。
您可能关注的文档
最近下载
- 竞争法学(第四版)课件全套(王先林)第1--11讲 竞争与竞争法的若干基本问题---中国反不正当竞争法的基本制度(四).ppt
- 小学数学课程标准与教材深度解析.pptx VIP
- 《GB18587-2016 室内装饰装修材料 地毯、地毯衬垫.》.pdf VIP
- 国防动员(讲稿).doc VIP
- 岗位人才画像(经理层).xlsx VIP
- 智能垃圾分类系统外文文献翻译中英文最新 (2).doc VIP
- 2026年山西工程职业学院单招语文测试题库.docx VIP
- DB22_T 5092-2015 城镇道路养护技术规程.docx VIP
- 2022年新高考全国一卷数学解析.pdf VIP
- 2025年重庆春招考试题型及答案.doc VIP
原创力文档

文档评论(0)