c014---函数指针,堆栈

来源:互联网 发布:硕士论文数据库 编辑:程序博客网 时间:2024/06/05 12:03

函数指针:
1.定义只想函数的指针变量的一般形式为数据类型 (*指针变量名)(函数参数列表)
eg: int (*p)( int ,int)
2.对于函数指针来说p+n,p++,p–等操作没有意义

栈空间是系统分配,一般的数据类型使用,可以自己释放内存,不需要程序员管理
堆空间一般默认分配的空间是1mb,是由程序员自己申请,并需要自己手动管理的空间
在vs中可以手动设置大小,但是不建议这么做

c语言中又三种分配内存空间的方法
malloc,colloc,realloc
首先这三个函数都在stdlib.h的函数库内:
三个函数的声明分别是:
void * malloc (unsigned size);
void *calloc (size_t numElements, size_t sizeofElement);
void *realloc(void *ptr,unsigned newsize);

他们的返回值都是请求系统分配的地址,如果请求失败 就返回NULL

malloc用于申请一段新的地址,参数size为所需内存空间的长度,如:
char *p;
p =(char *)malloc(1024);
malloc 分配的内存是位于堆中飞,并且没有出事话内存的内容,因此基本上malloc以后,就会调用函数memset来进行初始化这部分内存空间
calloc 将这部分内存初始化为0

申请的内存需要用free来释放

realloc 给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize 是重新申请的地址长度

0 0
原创粉丝点击