Ich habe dieses Beispiel in einem Buch:Was ist der "Wert" einer Array-Variablen?
#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;
}
Ich muß wissen, was allocbuf
darstellt (sein Wert), so wird er verwendet, in:
if (allocbuf + ALLOCSIZE - allocp >= n)
, weil ich dieses Beispiel nicht vollständig verstehen konnte.
Es wird in einen Zeiger auf das erste Element des Arrays im Ausdruck konvertiert. – MikeCAT
in C führt die Bezugnahme auf einen Array-Namen zu der Adresse des ersten Byte des Arrays. – user3629249
in C, seien Sie vorsichtig bei der Ausführung von Mathe auf Zeigern, Dies ist kein Problem, wenn die Zeiger auf das gleiche Array sind, (wie Sie sind), aber der Compiler wird auf alle Zeiger, die nicht auf das gleiche Array sind ersticken. – user3629249