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