Я думаю, что вы в замешательстве. Код из учебника - , создающий указатель и инициализирующий его как NULL
, затем он проверяет, является ли он NULL
. Причина, по которой вы не проверяете, является ли *p != NULL
, заключается в том, что он будет проверять, является ли то, на что он указывает, NULL
, а не проверять, является ли сам указатель NULL
.
.
Конечно, вы можете выбрать *p
для проверки любого значения, которое вам нравится, при условии, что это допустимый указатель ... Все зависит от того, что вы хотите сделать.
EDIT:
Вы не присвоили NULL
на *p
, вы присвоили p
. Заявление int *p = NULL;
- это то же самое, что и запись:
int *p;
p = NULL;
int *
это тип.
Как правило, когда вы пишете: if(p != NULL)
, вы просто проверяете, указывает ли p
место, которое безопасно использовать *p
.