我有一本書,這個例子:什麼是數組變量的「值」?
#define ALLOCSIZE 10000 /* size of available space */
static char allocbuf[ALLOCSIZE]; /* storage for alloc */
static char *allocp = allocbuf; /* next free position */
char *alloc(int n) /* return pointer to n characters */
{
if (allocbuf + ALLOCSIZE - allocp >= n) { /* it fits */
allocp += n;
return allocp - n; /* old p */
} else /* not enough room */
return 0;
}
void afree(char *p) /* free storage pointed to by p */
{
if (p >= allocbuf && p < allocbuf + ALLOCSIZE)
allocp = p;
}
我需要知道allocbuf
代表着什麼(它的價值),因此它被用於:
if (allocbuf + ALLOCSIZE - allocp >= n)
,因爲我無法完全理解這個例子。
它將被轉換爲指向表達式中數組的第一個元素的指針。在C中爲 – MikeCAT
,引用數組名稱將導致數組第一個字節的地址。 – user3629249
在C語言中,要小心執行指針的數學運算,如果指針指向同一個數組,那麼這不是問題,但編譯器會阻塞任何不在同一個數組的指針。 – user3629249