Я знаю, что указатель NULL является (void*)0
.Но то, что происходит, когда мы используем заявления вроде следующего:Является ли указатель NULL неявно преобразованным в тип (int *), когда мы используем «if (ptr == NULL)» для целочисленного указателя ptr?
if(ptr==NULL)
где ptr
может быть char
, float
или int
указатель Является NULL гарантированно быть неявно преобразован к типу слева так же, как, например, в C, тип, возвращаемый malloc()
, равен void*
, но неявно преобразован в тип lvalue?
strpbrk означает «string pointer break» –
[This] (http://stackoverflow.com/questions/1296843/what-is-the-difference-between-null-0-and-0) может ответить на ваши вопросы. Проверьте выбранный ответ –
И, наконец, NULL _not_ обязательно "(void *) 0". На некоторых платформах (Darwin!) Это просто «0». Следите за этим. В частности, никогда не делайте «printf («% p », NULL)» или «system (« thingy », NULL)», потому что он НЕ РАБОТАЕТ. –