关于c语言指针的问题?

划线那一行语句怎么理解,为什么能这样判别有没有足够空间... 划线那一行语句怎么理解,为什么能这样判别有没有足够空间 展开
 我来答
已存在这个名字
2020-11-05 · TA获得超过159个赞
知道小有建树答主
回答量:262
采纳率:78%
帮助的人:54.8万
展开全部

allocbuf是一个大小为ALLOCSIZE(10000)的数组,allocbuf表示首地址,allocbuf+ALLOCSIZE表示尾地址(其实allocbuf+ALLOCSIZE-1才是真正的尾地址,这里为了方便讲解才这样说的),程序中allocp初始化时指向allocbuf,即首地址。把这个搞清楚,现在我们来分析以下你划线的这条语句:

    1. 假设allocbuf的地址为0,则allocbuf+ALLOCSIZE = 10000;

    2. 假设此时allocp = 3800;

根据以上假设我们可以推断出可用空间还剩余:

  10000 - 3800 = 6200;    (1)

因为allocbuf+ALLOCSIZE = 10000,allocp=3800;所以(1)式可以写成:

allocbuf + ALLOCSIZE - allocp = 6200;(2)

现在我们再假设n = 5000;则有:

allocbuf + ALLOCSIZE - allocp = 6200 >= n;(3)

根据(3)式得出结论:还有足够的空间可使用,析毕。

下面给出一张图助你理解:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式