c - null pointer en java
¿Forma correcta de definir NULL y NULL_POINTER? (2)
Por lo que sé, C define NULL
así:
#define NULL ( (void *) 0)
Entonces, ¿cómo deberíamos definir NULL_POINTER
? Lo definí de la misma manera en mi programa y funcionó, pero supongo que es solo una coincidencia:
#define NULL_POINTER ( (void *) 0)
¿Cuál sería la definición lógica, si hay alguna?
Es solo en contextos de puntero que NULL
y 0
son equivalentes. NULL
no se debe usar cuando se requiere otro tipo de 0
, aunque podría funcionar, porque al hacerlo envía un mensaje de estilo incorrecto. (Además, ANSI permite que la definición de NULL
sea ((void *)0)
, lo que no funcionará en absoluto en contextos que no sean punteros.) En particular, no use NULL
cuando se desee el carácter nulo ASCII (NUL). Proporcione su propia definición
#define NUL ''/0''
NULL
debe usarse solo como una constante de puntero.
#define NULL ( (void *) 0)
y
#define NULL 0
son ambos validos Si necesita implementar su propia macro para el puntero nulo, se aplica la misma regla.
C11 (ISO / IEC 9899: 201x) §6.3.2.3 Punteros Sección 3
Una expresión constante entera con el valor
0
, o una expresión de este tipo para escribirvoid *
, se llama constante de puntero nulo