关于c语言指针的问题?

划线那一行语句怎么理解,为什么能这样判别有没有足够空间

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)式得出结论:还有足够的空间可使用,析毕。

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

温馨提示:答案为网友推荐,仅供参考
相似回答