Cómo comprobar si el puntero es nulo en C++
-
Comparar con
nullptr
para comprobar si el puntero esNULL
en C++ -
Usa la comparación con
0
para comprobar si el puntero esNULL
en C++ -
Usar el valor del puntero como condición para comprobar si el puntero es
NULL
en C++
Este artículo demostrará múltiples métodos sobre cómo comprobar si un puntero es nulo en C++.
Comparar con nullptr
para comprobar si el puntero es NULL
en C++
El lenguaje C++ proporciona múltiples características de bajo nivel para manipular la memoria directamente y especifica el concepto de “puntero”, que es el objeto que apunta a una dirección de memoria. Normalmente, un puntero debe apuntar a algún objeto que sea utilizado por el programa de ejecución. Aunque, también podemos declarar un puntero como un puntero nulo que no apunta a ningún objeto.
Un puntero nulo se inicializa asignando el valor literal nullptr
o con el entero 0
. Note, sin embargo, que el C++ moderno sugiere evitar la inicialización 0
de los punteros porque puede conducir a resultados indeseados cuando se usan funciones sobrecargadas. En el siguiente ejemplo, comprobamos si el puntero no es igual a un nullptr
, y si la condición se cumple, podemos operar sobre él.
#include <iostream>
using std::cout;
using std::endl;
#define SIZE 123
int main() {
char *arr = (char *)malloc(SIZE);
if (arr != nullptr) {
cout << "Valid pointer!" << endl;
} else {
cout << "NULL pointer!" << endl;
}
free(arr);
return EXIT_SUCCESS;
}
Resultado:
Valid pointer!
Usa la comparación con 0
para comprobar si el puntero es NULL
en C++
También hay una variable del preprocesador llamada NULL
, que tiene sus raíces en la biblioteca estándar de C y se utiliza a menudo en el código heredado. Tenga en cuenta que no se recomienda utilizar NULL
en la programación contemporánea de C++ porque equivale a la inicialización por el entero 0
, y los problemas pueden surgir como se ha indicado en la sección anterior. Aún así, podemos comprobar si un puntero es nulo comparándolo con 0
como se demuestra en el siguiente ejemplo de código:
#include <iostream>
using std::cout;
using std::endl;
#define SIZE 123
int main() {
char *arr = (char *)malloc(SIZE);
if (arr != 0) {
cout << "Valid pointer!" << endl;
} else {
cout << "NULL pointer!" << endl;
}
free(arr);
return EXIT_SUCCESS;
}
Resultado:
Valid pointer!
Usar el valor del puntero como condición para comprobar si el puntero es NULL
en C++
Los punteros nulos se evalúan como false
cuando se usan en expresiones lógicas. Así, podemos poner un puntero dado en la condición de if
para comprobar si es un nulo. Nótese que la derivación de punteros nulos lleva a un comportamiento indefinido, lo que causa que un programa termine anormalmente en la mayoría de los casos.
#include <iostream>
using std::cout;
using std::endl;
#define SIZE 123
int main() {
char *arr = (char *)malloc(SIZE);
if (arr) {
cout << "Valid pointer!" << endl;
} else {
cout << "NULL pointer!" << endl;
}
free(arr);
return EXIT_SUCCESS;
}
Resultado:
Valid pointer!
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook