



Punteros
Un puntero es una variable que contiene una direcci¨®n de memoria, usualmente la direcci¨®n de otra variable. Los operadores de los punteros son dos & ¨¤ ¡°direcci¨®n de¡± y * ¨¤ ¡°en la direcci¨®n de¡±. Para entender como funcionan los punteros es interesante que realicemos un ejercicio de movimiento por un vector utilizando solo metodolog¨ªa de punteros. Supongamos que tenemos un vector de 8 enteros:
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
4 |
8 |
3 |
6 |
2 |
5 |
9 |
1 |
Y queremos cambiar estos dos valores oscurecidos en la imagen utilizando solo metodolog¨ªa de punteros:
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
4 |
8 |
3 |
6 |
9 |
5 |
0 |
1 |
Esta seria una de las formas de hacerlo:
|
#include <stdio.h> #include <conio.h>
main() { int *ptr, *ptr2; int vector[]={4,8,3,6,2,5,9,1}; int i;
for(i=0;i<=7;i++) { printf("Vector[%d]= %d\n",i,vector[i]); } getch();
ptr=vector; ptr++; ptr+=3; *ptr=9; /*vector[4]=9*/ ptr2=vector+6; *ptr2=0; /*vector[6]=0*/ printf("\n\n");
for(i=0;i<=7;i++) { printf("Vector[%d]= %d\n",i,vector[i]); } getch(); }
|
Veamos que es lo que esta sucediendo, primero declaramos dos variables puntero, ptr y ptr2. Declaramos el vector y lo inicializamos a los n§ìmeros que le hemos metido entre las llaves. Con el primer bucle for(), mostramos por pantalla el vector. Ahora es cuando viene la chicha :D. Lo hare graficamente para que os entereis bien:
Char *p ¨¤ p++ Incrementa el valor de p en 1 bytes
Int *p ¨¤ p++ Incrementa el valor de p en 2 bytes
Flota *p ¨¤ p++ Incrementa el valor de p en 4 bytes
Veamos un ejemplo:
|
#include <stdio.h> #include <conio.h> #include <stdlib.h>
main() { int i; /* Numero Entero */ int *pl; /* Declaramos un Puntero */
pl=&i; *pl=10; printf("El puntero ha funcionado y su valor es: %d",i); getch(); }
|
Tambi¨¦n podemos utilizar punteros de tipo car¨¢cter. Para almacenar una frase por ejemplo:
|
#include <stdio.h> #include <conio.h> #include <stdlib.h>
main() { char *string; string="Estructura"; printf("Esto es una %s",string); getch(); }
|
Otro ejemplo utilizando punteros con variables float:
|
#include <stdio.h> #include <conio.h>
main() { float f; float *pF; pF=&f; *pF=178.3; printf("%f",f); getch(); }
|
|