| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 317 人关注过本帖
标题:作业题目,有点不理解。。。。
只看楼主 加入收藏
hywhll888
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2011-6-9
结帖率:100%
收藏
 问题点数:0 回复次数:0 
作业题目,有点不理解。。。。
编写一个函数alloc(n) ,用来在内存区开辟一个连续的空间(n个字节)。此函数的返回值是一个指针, 只想新开辟的连续空间的起始地址。 再写一个函数free(p),将起始地址p开始的各单元释放(不能再被程序使用 ,除非再度开辟)。
提示:现在内存区定出一片相当大的连续空间(如1000字节)。然后开辟与释放都在此空间进行。假设指针变量p原已指向未用空间的开头,调用alloc(n)后,开辟了n个字节可供程序适使用。现在需要使 p的值变为p+n,表示空白未用区从p+n地址开始,同时要将开辟区的起始地址(p)作为函数值返回,以表示可以利用从此点开始的单元。如果要开辟的区太大(n大),超过了预想的(1000)字符,则alloc(n)函数返回指针NULL,表示开辟失败。

以下是我写的东西 感觉并没有理解题目的意思,求解释。。。
#include <stdio.h>
#include <math.h>
#include <string.h>
#define NULL 0
void main()
{
    char *alloc(char a[],int n);
    void free(char *p,int n);
    char a[1000],*p;
    int n;
    scanf("%d",&n);
    if((p=alloc(a,n))!=NULL)
    {
        free(p,n);
    }
    else
        printf("开辟失败");
}


char *alloc(char a[],int n)
{
    int i;
    char *x;
    x=a;
    fflush(stdin);
    if(n>1000||n<1)
    {
        return(NULL);
    }
    else
    {
        for(i=0;i<n;i++)
        {
            scanf("%c",&a[i]);
        }
        return(x);
    }
}

void free(char *p,int n)
{
    int i;
    for(i=0;i<n;i++,p++)
    {
        p=NULL;
    }
}
搜索更多相关主题的帖子: 空间 
2011-08-02 19:09
快速回复:作业题目,有点不理解。。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024729 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved