NULL
De cppreference.com
<tbody>
</tbody>
| Definido en el archivo de encabezado <stddef.h>
|
||
| Definido en el archivo de encabezado <string.h>
|
||
| Definido en el archivo de encabezado <wchar.h>
|
||
| Definido en el archivo de encabezado <time.h>
|
||
| Definido en el archivo de encabezado <locale.h>
|
||
| Definido en el archivo de encabezado <stdio.h>
|
||
| Definido en el archivo de encabezado <stdlib.h>
|
||
#define NULL /*definido-en-implementacion*/ |
||
La macro NULL es una constante de puntero nulo definida por la implementación, que puede ser:
- una expresión constante entera con el valor
0 - una expresión constante entera con el valor
0asignado al tipovoid*.
Una constante de puntero nula puede ser convertida a cualquier tipo de puntero; tal conversión resulta en el valor de puntero nulo de ese tipo.
Posible implementación
// C++ compatible:
#define NULL 0
// C++ incompatible:
#define NULL (10*2 - 20)
#define NULL ((void*)0)
|
Ejemplo
Ejecuta este código
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
// cualquier tipo de puntero puede ser cambiado a NULL
int* p = NULL;
struct S *s = NULL;
void(*f)(int, double) = NULL;
// muchas funciones de retorno de puntero utilizan punteros nulos para indicar errores
char *ptr = malloc(10);
if (ptr == NULL) printf("Fuera de memoria");
free(ptr);
}
Véase también
Documentación de C++ para NULL
|