(1)编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针
(地址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间。要求用指针方法处理。
(2)写一函数free,将前面用new函数占用的空间释放。free(p)表示将p(地址)指向
的单元以后的内存段释放。要求用指针方法处理。
1. #include<stdio.h> #define NEWSIZE 1000 //指定开辟存区的最大容量 char newbuf[NEWSIZE]; //定义字符数组newbuf char *newp=new buf; //定义指针变量newp,指向可存区的始端 char *new(int n) //定义开辟存区的函数new,开辟存储区后返回指针 {if(newp+n<=newbuf+NEWSIZE) //开辟区未超过newbuf数组的大小 {newp+=n; //newp指向存储区的末尾 return(newp-n); //返回一个指针,它指向存区的开始位置 } else return(NULL); //当存区不够分配时,返回一个空指针 } 2. #include<stdio.h> #define NEWSIZE 1000 char newbuf[NEWSIZE]; char *newp=newbuf; void free(char*p) //释放存区函数 {if(p>=newbuf && p< newbuf+NEWSIZE) newp=p; }
1.
#include<stdio.h>
#define NEWSIZE 1000 //指定开辟存区的最大容量
char newbuf[NEWSIZE]; //定义字符数组newbuf
char *newp=new buf; //定义指针变量newp,指向可存区的始端
char *new(int n) //定义开辟存区的函数new,开辟存储区后返回指针
{if(newp+n<=newbuf+NEWSIZE) //开辟区未超过newbuf数组的大小
{newp+=n; //newp指向存储区的末尾
return(newp-n); //返回一个指针,它指向存区的开始位置
}
else
return(NULL); //当存区不够分配时,返回一个空指针
2.
#define NEWSIZE 1000
char newbuf[NEWSIZE];
char *newp=newbuf;
void free(char*p) //释放存区函数
{if(p>=newbuf && p< newbuf+NEWSIZE)
newp=p;
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题