Я изучаю очереди и наткнулся на этот кусок кода.Это из книги, поэтому я не могу опубликовать весь код здесь, но то, что я публикую, будет достаточно.Больше чем проблема, я просто хочу подтвердить, правильно ли я понимаю этот код.
В функции delete_ap () оператор if вызывает функцию qretrieve () и сохраняет ее возвратзначение в указателе 'p'.Моя проблема: если возвращаемое значение не NULL, то выполняется оператор if, не так ли?Таким образом, значение по-прежнему сохраняется в «p», и мы можем просто напечатать это значение без использования оператора «else», как в этом примере.
Спасибо!
/* Delete an appointment from the queue. */
void delete_ap(void)
{
char *p;
if((p=qretrieve()) ==NULL) return;
printf("%s\n", p); <--Problem is in this line and the one above it.
}
/* Retrieve an appointment. */
char *qretrieve(void)
{
if(rpos==spos) /* spos:holds the index of the next free storage location.
rpos:holds the index of the next item to retrieve.*/
{
printf("No more appointments.\n");
return NULL;
}
rpos++;
return p[rpos-1];
}