это пример в книге K & R ch5 , этот пример - определение функции alloc, которую я получил, но я застрял и не смог понять, почему он возвращает старый указатель, и в первом утверждении allocp += n;
он увеличивает allocp затем он уменьшает его allocp - n
это мой первый вопрос, также я не могу понять, если блок условия
if(condition is true)
do something;
когда он пишет оператор return, так что если роль будет завершена и вернет старый указатель, и выполните один цикл. и не может добраться до всех n сегментов.
Мой второй вопрос это правда, что записать возвращение внутри if, а не записать его из блока if?
это весь код
#define ALLOCSIZE 1000
static char allocbuf[ALLOCSIZE];
static char *allocp = allocbuf;
char *alloc(int n)
{
if(allocbuf + ALLOCSIZE - allocp >= n ) // it fits
{
allocp += n;
return allocp - n; // old p
}else
return 0;
}