haiouda 发表于 2015-3-27 01:03:30

运行出错,怎么改正?谢谢

本帖最后由 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;      //定义字符数组newbuf
   char *newp=newbuf;   //定义指针变量newp,指向可存区的始端
         char *new(int n);
   void free(char *p);
   
   new(10);
         free(newp);
}



char *new(int n)    //定义开辟存区的函数new,开辟存储区后返回指针
{char newbuf;      //定义字符数组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;      //定义字符数组newbuf
   char *newp=newbuf;   //定义指针变量newp,指向可存区的始端
   
         if (p>=newbuf && p<=newbuf + NEWSIZE)
                newp=p;
}

#endif


雪是梅之香 发表于 2015-3-27 09:47:47

请问楼主,你所说的错误是指什么,我运行了下,没报错

haiouda 发表于 2015-3-27 11:31:19

雪是梅之香 发表于 2015-3-27 09:47
请问楼主,你所说的错误是指什么,我运行了下,没报错

上图了

优雅的独行者 发表于 2015-3-27 12:30:45

new是关键字不能用作函数名改个名字就能编译通过了
至于你的链接错误也是函数命名的问题 c函数库中已经free函数了

haiouda 发表于 2015-3-27 12:52:11

优雅的独行者 发表于 2015-3-27 12:30
new是关键字不能用作函数名改个名字就能编译通过了
至于你的链接错误也是函数命名的问题 c函数库中已经fre ...

谢谢
页: [1]
查看完整版本: 运行出错,怎么改正?谢谢