Feed on
Posts
Comments
+ Archivos en C
+ Estructuras en C
+ Graficos en C
+ Metodo de ordenacion Burbuja
>> Punteros en C
    >> Apuntadores en C
    * Aritmetica en C
    * Funciones en C
    * Estructuras en C
    * Listas enlazadas en C

+ Tecnologias de almacenamiento
+ Turbo C basico 1

Apuntadores
  • Un puntero es una variable que contiene la dirección de memoria de otra variable. Se utilizan para pasar información entre una función y sus puntos de llamada.
    Su sintaxis es la siguiente:

    tipo *nombre;

    Donde nombre es, naturalmente, el nombre de la variable, y tipo es el tipo del elemento cuya dirección almacena el puntero.


    • Operadores
    • Existen dos operadores especiales para trabajar con punteros: & y *.
    • El primero (&) devuelve la dirección de memoria de su operando. Por ejemplo, si queremos guardar en el puntero x la dirección de memoria de la variable num, deberemos hacer lo siguiente:

        x=#

    • El segundo (*) devuelve el valor de la variable cuya dirección es contenida por el puntero. Este ejemplo sitúa el contenido de la variable apuntada por x, es decir num, en la variable a:

      • a=*x;

      Asignación
      Los punteros se asignan igual que el resto de las variables. El programa ejemplo mostrará las direcciones contenidas en p1 y p2, que será la misma en ambos punteros.

      #include <stdio.h>
      #include <conio.h>
      main()
      {
             clrscr();
             int a;
             int *p1, *p2;
             p1 = &a;
             p2 = p1;
             printf("%p %p",p1,p2);
             getch();
      }


      Ejemplo 2
        #include <conio.h>
        #include <stdio.h>
        void main(void)
        { char s[100];
               int *ptr;
               int i;
               int contador=1;
               ptr=&contador;
               clrscr();
               printf("Escriba una cadena: ");
               gets(s);
               printf("La cadena tiene: ");
               printf("\n");
               for (i=0; s[i]!=0; i++)
                      {
                      if(s[i]==' ')
                      {if(s[i+1]!=' ')
                                    contador++;
                             }
               }
               printf("%d palabras.",*ptr);
               getch();
        }