Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


9.3. Repasemos con un ejemplo sencillo

El ejemplo anterior era “un caso real”. Generalmente, los casos reales son más aplicables que los ejemplos puramente académicos, pero también más difíciles de seguir. Por eso, antes de seguir vamos a ver un ejemplo más sencillo que nos ayude a asentar los conceptos: Reservaremos espacio para un número real de forma estática, y para dos números reales de forma dinámica, daremos valor a dos de ellos, guardaremos su suma en el tercer número y mostraremos en pantalla los resultados.

/*---------------------------*/
/*  Ejemplo en C nº 73:      */
/*  C073.C                   */
/*                           */
/*  Manejo básico de         */
/*  punteros                 */
/*                           */
/*  Curso de C,              */
/*    Nacho Cabanes          */
/*---------------------------*/

#include 
#include 

int main() {
  float n1;           /* Primer número, estático */
  float *n2, *suma;   /* Los otros dos números */      
  
  n1 = 5.0;           /* Damos un valor prefijado a n1 (real) */
  n2 = (float *) malloc (sizeof(float)); /* Reservamos espacio para n2 */
  *n2 = 6.7;          /* Valor prefijado para n2 (puntero a real) */
  
  suma = (float *) malloc (sizeof(float)); /* Reservamos espacio para suma */
  *suma = n1 + *n2;   /* Calculamos la suma */
  
  printf("El valor prefijado para la suma era %4.2f\n",
    *suma);

  printf("Ahora es tu turno: Introduce el primer número ");
  scanf("%f",&n1);   /* Leemos valor para n1 (real) */
  
  printf("Introduce el segundo número ");
  scanf("%f",n2);    /* Valor para n2 (puntero a real) */  

  *suma = n1 + *n2;  /* Calculamos nuevamente la suma */
  
  printf("Ahora la suma es %4.2f\n", *suma);

  free(n2);          /* Liberamos la memoria reservada */
  free(suma);

  return 0;  
}

Las diferencias son:

(En este ejemplo, no hemos comprobado si el resultado de “malloc” era NULL, porque sólo pedíamos espacio para dos variables, y hemos dado por sentado que sí habría memoria disponible suficiente para almacenarlas; en un caso general, deberemos asegurarnos siempre de que se nos ha concedido ese espacio que hemos pedido).