Los punteros no inicializados se conocen como punteros salvajes porque apuntan a una ubicación de memoria arbitraria y pueden hacer que un programa se bloquee o se comporte mal.
int main() { int *p; /* wild pointer */ /* Some unknown memory location is being corrupted. This should never be done. */ *p = 12; }
Tenga en cuenta que si un puntero p apunta a una variable conocida, entonces no es un puntero salvaje. En el siguiente programa, p es un puntero salvaje hasta que apunta a a.
int main() { int *p; /* wild pointer */ int a = 10; p = &a; /* p is not a wild pointer now*/ *p = 12; /* This is fine. Value of a is changed */ }
Si queremos apuntar a un valor (o conjunto de valores) sin tener una variable para el valor, debemos asignar memoria explícitamente y colocar el valor en la memoria asignada.
int main() { int *p = (int *)malloc(sizeof(int)); *p = 12; /* This is fine (assuming malloc doesn't return NULL) */ }
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA