MEJOR SITIO PARA DESARROLLADORES WEB
C Idioma. W3Schools en español. Lecciones para principiantes

Ua En De

C Punteros


Creando punteros

Aprendiste en el capítulo anterior que podemos obtener la dirección de memoria de una variable con el operador de referencia &:

Ejemplo

int myAge = 43; // una variable entera

printf("%d", myAge);  // Genera el valor de myAge (43)
printf("%p", &myAge); // Genera la dirección de memoria de myAge (0x7ffe5367e044)
Inténtalo tú mismo »

Un puntero es una variable que almacena la dirección de memoria de otra variable como su valor.

Una variable de puntero apunta a un tipo de datos (como int) del mismo tipo y se crea con el operador *.

La dirección de la variable con la que estás trabajando se asigna al puntero:

Ejemplo

int myAge = 43;     // Una variable entera
int* ptr = &myAge;  // Una variable de puntero, con el nombre ptr, que almacena la dirección de myAge

// Genera el valor de myAge (43)
printf("%d\n", myAge);

// Genera la dirección de memoria de myAge (0x7ffe5367e044)
printf("%p\n", &myAge);

// Genere la dirección de memoria de myAge con el puntero (0x7ffe5367e044)
printf("%p\n", ptr);
Inténtalo tú mismo »

Ejemplo explicado

Cree una variable de puntero con el nombre ptr, que apunte a un int variable (myAge). Tenga en cuenta que el tipo de puntero debe coincidir con el tipo de variable con la que está trabajando (int en nuestro ejemplo).

Utilice el operador & para almacenar la dirección de memoria de la variable myAge y asígnela a la puntero.

Ahora, ptr contiene el valor de la dirección de memoria de myAge.


Desreferencia

En el ejemplo anterior, usamos la variable de puntero para obtener la dirección de memoria de una variable (usada junto con el operador & reference ).

También puede obtener el valor de la variable a la que apunta el puntero utilizando el operador * (el operador desreferencia):

Ejemplo

int myAge = 43;     // Declaración de variables
int* ptr = &myAge;  // Declaración de puntero

// Referencia: genera la dirección de memoria de myAge con el puntero (0x7ffe5367e044)
printf("%p\n", ptr);

// Desreferencia: genera el valor de myAge con el puntero (43)
printf("%d\n", *ptr);
Inténtalo tú mismo »

Tenga en cuenta que el signo * puede resultar confuso aquí, ya que hace dos cosas diferentes en nuestro código:

  • Cuando se usa en la declaración (int* ptr), crea una variable de puntero.
  • Cuando no se utiliza en la declaración, actúa como un operador de desreferencia.

Es bueno saberlo: Hay dos formas de declarar variables de puntero en C:

int* myNum;
int *myNum;

Notas sobre sugerencias

Los punteros son una de las cosas que hacen que C se destaque de otros lenguajes de programación, como Python y Java.

Son importantes en C, porque nos permiten manipular los datos en la memoria de la computadora. Esto puede reducir el código y mejorar el rendimiento. Si está familiarizado con estructuras de datos como listas, árboles y gráficos, debe saber que los punteros son especialmente útiles para implementarlos. Y a veces incluso tienes que usar punteros, por ejemplo, cuando trabajas con archivos.

Pero ten cuidado; Los punteros deben manejarse con cuidado, ya que es posible dañar los datos almacenados en otras direcciones de memoria.


C Ejercicios

Ponte a prueba con ejercicios

Ejercicio:

Cree una variable de puntero llamada ptr, que apunte a la variable int myAge:

int myAge = 43;
  = &myAge;