专题9  指针
9.1  指针变量
9.2  指针与一维数组9.3  指针与二维数组9.4  指针与函数
9.5  指针与动态内存管理
9.5  指针与动态内存管理☐内存分配方式
☐用指针实现动态内存分配
1  C语言的内存分配方式
(1)静态分配与动态分配
☐静态分配:在程序编译时由编译系统进行分配。
molloc函数例如:
int a=100;
编译系统为a分配4字节的存储空间,以存放一个int型数据。
☐动态分配:在程序执行时通过内存动态分配函数进行分配。
例如:
char *p=(char *)malloc(10);
分配10字节的存储空间,然后返回在内存中的起始地址,接着用这个地址来初始化指针变量p。
(2)静态分配与动态分配的区别
☐静态内存分配是在程序执行之前进行的,因而程序执行效率比较高,而动态内存分配可以灵活处理所需内存空间。
☐静态分配的内存空间是有名字的,可以通过变量名直接对其进行操作;动态分配的内存空间是没有名字的,需要通过指针间接地对它进行访问。
2  用指针实现动态内存分配
(1)动态申请内存空间函数malloc()
一般调用格式:
指针变量=(指针变量的基类型*)malloc(字节数);
☐malloc函数的功能是在内存中开辟指定字节数的连续的存储空间,并以此内存空间的首地址作为函数值返回值。
☐malloc函数的返回值是基类型为void的指针,因此给指针变量赋值时需要强制类型转换;若分配不成功,则返回值是NULL 。
☐在程序中要包含头文件stdlib.h。
2  用指针实现动态内存分配
(2)动态申请内存空间函数calloc()函数
一般调用格式:
指针变量=(指针变量的基类型*)calloc(n,size);
☐在内存的动态存储区中分配n个连续存储空间,每一存储空间的长度为size,并且分配后还把存储空间全部初始化为0。
☐若申请成功,则返回一个被分配内存空间的起始地址。若申请内存空间不成功,则返回NULL。
☐malloc对所分配的存储空间不做任何处理,calloc自动初始化该内存空间为零。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。