马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 haiouda 于 2015-3-27 11:31 编辑 /********************************************************************************
1)编写一个函数 new ,对 n 个字符开辟连续的存储空间,此函数应返回一个指针(地址),
指向字符串开始的空间。 new(n)表示分配 n 个字节的内存空间。
2)写一个函数 free,将前面用 enw 函数占用的空间释放。 free(p)表示将p(地址)指向
的单元以后的内存段释放。
*********************************************************************************/
#if(1)
#include <stdio.h>
#define NEWSIZE 1000 //指定开辟存区的最大容量
void main()
{
char newbuf[NEWSIZE]; //定义字符数组newbuf
char *newp=newbuf; //定义指针变量newp,指向可存区的始端
char *new(int n);
void free(char *p);
new(10);
free(newp);
}
char *new(int n) //定义开辟存区的函数new,开辟存储区后返回指针
{char newbuf[NEWSIZE]; //定义字符数组newbuf
char *newp=newbuf; //定义指针变量newp,指向可存区的始端
if (newp+n<=newbuf+NEWSIZE) //开辟区未超过newbuf数组的大小
{
// newp+=n; // newp指向存储区的末尾
return(newp-n); //返回一个指针,它指向存区的开始位置
}
else
return(NULL); //当存区不够分配时,返回一个空指针
}
void free(char *p) //释放存区函数
{
char newbuf[NEWSIZE]; //定义字符数组newbuf
char *newp=newbuf; //定义指针变量newp,指向可存区的始端
if (p>=newbuf && p<=newbuf + NEWSIZE)
newp=p;
}
#endif
|