23/10/2004, 20:00
|
| | | Fecha de Ingreso: julio-2004 Ubicación: Ciudad de México
Mensajes: 544
Antigüedad: 20 años, 4 meses Puntos: 2 | |
Hay que tratar de ser un poco más riguroso con el lenguaje pues nos puede llevar a confusión. Veamos:
Los punteros SON VARIABLES que almacenan direcciones de memoria al tipo de dato especificado. int *puntero;
En una variable tipo "puntero a entero"
El símbolo & es el OPERADOR MONÁDICO, que devuelve la dirección de memoria de una variable (la que sea).
El simbolo * es el OPERADOR DE INDIRECCIÓN que devuelve el contenido de una variable apuntada por un apuntador.
Es decir, siguiendo con el código anterior, si yo escribo: puntero = &a;
La variable puntero almacena la dirección de la variable a.
Ahora: b = *puntero;
La variable b toma el valor de la variable a la que apunta puntero. *puntero = b;
La variable a la que apunta puntero toma el valor de b. puntero1 = puntero2;
Ya que los punteros son variables y almacenan direcciones, la instrucción anterior copiará el contenido de puntero2 a puntero1. (La dirección que almacena puntero2 también la almacenará puntero1)
El siguiente código utiliza un puntero a puntero: #include <stdio.h>
int main()
{
int a, *puntero, **puntero_a_puntero;
a = 10; //a toma el valor de 10
puntero = &a; //puntero toma la dirección de a
puntero_a_puntero = &puntero; //puntero_a_puntero toma la dirección de puntero
//Se imprime el contenido de lo que apunta aquello a lo que apunta puntero_a_puntero
printf("El valor de a es: %d", **puntero_a_puntero);
getchar();
return(0);
}
__________________ Mi pequeño espacio en la web: VisiónE "El cosmos es todo lo que es, todo lo que fue, y todo lo que será alguna vez."
Última edición por KnowDemon; 23/10/2004 a las 20:25 |