Я имел в виду NULL Pointer в What's the difference between a null pointer and a void pointer? Согласно сообщению ответа от @AnT, «Формально каждый тип указателя (int *, char * и т. Д.) Имеет свой собственный выделенный нулевой указатель значение "Условное значение для указателя NULL
Я написал простую программу. Но значение указателя не фиксируется для целого или символа. Иногда это меняется. Итак, как мы можем заключить, что указатель NULL для int имеет фиксированное значение? Кроме того, значение указателя никогда 0.
#include <stdio.h>
int main()
{
int a;
char *ptr; // Declaring a pointer without initializing it
int *ptrToInt;
if(ptr)
{
printf("Pointer is not NULL\n");
printf("Value of pointer = %x\n",ptr);
printf("Value of pointer = %x\n",ptrToInt);
}
else
{
printf("Pointer is NULL\n");
printf("Value of pointer = %x",ptr);
printf("Value of pointer = %x\n",ptrToInt);
}
return 0;
}
Ваш 'if (ptr)' является неопределенным поведением, так как 'ptr' является неинициализированной автоматической переменной. См. Проект стандарта C11 «6.2.4 Длительность хранения объектов, раздел 6» и «Приложение J.2 Неопределенное поведение». – EOF
Я не вижу нулевого указателя, но только два неинициализированных указателя. – alk
должен быть 'char * ptr = NULL;' – nafsaka