fbpixel
Etiquetas: ,
0
(0)

,

El puntero en el lenguaje C es una herramienta muy poderosa para realizar ciertas tareas. Es un concepto que necesitas comprender si quieres mejorar tus habilidades en C. Algunos algoritmos serán más complicados o incluso imposibles de escribir sin el uso de punteros.

Introducción

En un programa, cualquier elemento definido (variables, objetos, funciones, etc.) se almacena en memoria en una dirección determinada. Para encontrar este elemento, basta con conocer la dirección de memoria utilizada por el elemento, o la primera dirección utilizada si la variable ocupa varias zonas de memoria.

Un puntero es una variable que contiene la dirección de memoria de otra variable (u objeto). Aunque el valor de un puntero es siempre un número entero, su tipo depende del objeto al que apunte.

Declarar un puntero

El tipo del puntero debe ser idéntico al tipo de la variable a la que se dirige.

<type> * <pointer_name> //o <type> *<pointer_name>

Ex:

float myfloat
float * myfloataddress;
int myint
int * myintaddress;

Por tanto, podemos inicializar la variable y su dirección en la misma línea

int i,*pi;

Operación con punteros

La dirección de una variable es un número entero. Por lo tanto, es posible sumar y restar un entero a una dirección para obtener un puntero del mismo tipo a una dirección diferente.

ptr+i –>dirección contenida en ptr + i * tamaño del tipo ptr

También se pueden restar dos direcciones que apunten al mismo tipo. La resta es útil, por ejemplo, cuando los dos punteros apuntan a la misma matriz para averiguar el número de elementos entre los dos elementos apuntados.

ptr1-ptr2 -> (dirección apuntada por ptr1 – dirección apuntada por ptr2)/( tipo tamaño de ptr1 y ptr2)

También es posible comparar valores de direcciones utilizando los operadores <,>,<=,>=,!= y ==.

Modificación del valor de una variable mediante un puntero

En el siguiente ejemplo, x es una variable entera y p es un puntero entero que contiene la dirección de la variable x. El valor de x inicializado en 3 se cambia a 21 utilizando el puntero. El valor de x, inicializado en 3, se cambia a 21 utilizando el puntero.

int x=3;
int * p=&amp;amp;x;

*p=21; // is equivalent to x=21;
printf("valeur de *p = %d\n",*p); // equivalent to printf("valeur de x = %d\n",x);

Modificación de una variable en la entrada de una función

En C, una función sólo puede devolver una única variable. Para devolver varios valores, es posible utilizar los punteros de estas variables de entrada en lugar de devolver los propios valores.

#include <iostream>

int myparam=5;
struct mystruct_T{
  int val1;
  int val2;
}STRUCT;

void change_struct( mystruct_T * mystruct, int * param) {
   mystruct-&gt;val1=10;
   *param=26;
}

int main(){
    change_struct(&amp;STRUCT, &amp;myparam);
    
    printf("Struct.val1 : %d",STRUCT.val1);
    printf("param : %d",myparam);
}

Con este método, es posible modificar varias variables como si la función devolviera varios valores.

Breve resumen

  • Un puntero es una variable que contiene la dirección de otra variable
  • Para acceder a la dirección de la variable var utilizamos el operador de dirección(&): &var
  • Para obtener el valor de la variable a partir de la dirección, utilice el operador de indirección(*): *puntero
  • Cuando se utiliza un puntero de estructura, se utiliza el operador -> para acceder al miembro de la estructura: mystruct->elm1
  • Es posible señalar funciones

Fuentes

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?