PUNTEROS (POINTERS)

CONCEPTO

Un puntero es una variable que en lugar de contener un valor contiene la dirección de otra variable.

DECLARACION

En C un puntero se declara con el signo estrella * entre el tipo de la variable y el nombre de la misma.

 

  • int *pi /*puntero a una variable detipo int */

ASIGNACION DE UNA DIRECCION A UN PUNTERO (REFERENCIA)

Para asignar una dirección de una variable a un puntero se utiliza el operador unario &.

DEREFERENCIA DE UN PUNTERO.

Dereferencia es la operación de obtener la variable a la cual apunta el puntero. Una vez dereferenciado este todas las operaciones que se efectúen afectarán a la variable a la cual apunta.
Para dereferenciar un puntero se pone el signo estrella * delante del mismo.

 

  • #include <stdio.h>
    main()
    {

  • int *pi; /* puntero a una variable detipo int */
    int i;
    pi=&i; /* pi contiente la dirección de la variable i*/
    i=45;
    printf ("\n i=%d",*pi); /* dereferencia: visualiza la variable a donde apunta pi es decir: i=45 */
    *pi= 100; /* Asigna 100 al valor de i (dereferencia) */
    printf("\n i=%d",i); /* visualiza i=100 */
    }

  •  
  • : Asignación pi=&i; i=45;

    dirección

    contenido

    $400(pi)

    $500

    -----

    -----

    -----

    -----

    $500 (i)

    45

    -----

    -----

    : Asignación *pi=100;

    dirección

    contenido

    $400(pi)

    $500

    -----

    -----

    -----

    -----

    $500 (i)

    100

    -----

    -----

Asignación de un vector de tipo char

Similarmente se puede asignar una dirección a una variable de tipo vector de caracteres.

 

  • #include <stdio.h>
    void main()
    {

  • char *str;
    str="Salve"; /* str contiene tiene la direccion de la constante "Salve"*/
    printf("\n %s",str); /* Visualiza Salve gente */
    str ="Hola"; /* str contiene la dirección de la constante "Hola" */
    printf("\n %s",str); /* Visualiza Hola */
    }

  • contenido de la dirección $200 después de str="Salve";
    contenido de la dirección $200 después de str="Hola"
  •  

    Dirección

    contenido

    $400

    `S'

    $401

    `a'

    $402

    `l'

    $403

    `v'

    $404

    `e'

    $405

    `\0'

    -----

    -----

    $500

    `H'

    $501

    `o'

    $502

    `l'

    $503

    `a'

    $504

    `\0'

    $505

     

     

    -----

    -----

    $200 (str)

    $400

    -----

    -----

     

    -----

    -----

    $200 (str)

    $500

    -----

    -----