• Lunes 23 de Diciembre de 2024, 17:26

Autor Tema:  Por Favor Expliquenme  (Leído 795 veces)

Emir

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Por Favor Expliquenme
« en: Miércoles 19 de Abril de 2006, 01:11 »
0
Perdon que moleste, pero es que necesito saber si alguien me puede explicar esto:

void insertar(tArbol **a, int elem)     //Que significa en esta parte los **, o a que hace referencia
{
  if (*a == NULL)
  {
    *a = (tArbol *) malloc(sizeof(tArbol));    //En esta linea no se que dice es que yo no he manejado la funcion de malloc y no se para que sirve
    (*a)->clave = elem;
    (*a)->hIzquierdo =  NULL;
    (*a)->hDerecho = NULL;
  }
  else if ((*a)->clave < elem)
    insertar(&(*a)->hDerecho, elem);
  else if ((*a)->clave > elem)
    insertar(&(*a)->hIzquierdo, elem);
}

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Por Favor Expliquenme
« Respuesta #1 en: Miércoles 19 de Abril de 2006, 02:04 »
0
* indica que el parámetro recibido es un puntero al tipo de dato indicado.

La función malloc te permite "reservar memoria" de manera dinámica (en tiempo de ejecución) y se asigna a un puntero.

Esto está relacionado con el manejo dinámico de la memoria, y se usa generalmente para cuando se desea cambiar el tamaño de alguna colección de datos en el momento en el que se ejecuta el programa.

Un ejemplo sencillo sería con un array de 5 enteros, lo puedes declarar así:
Código: Text
  1.  
  2. int miArray[ 5 ];
  3.  
  4.  
o así:
Código: Text
  1.  
  2. int *miArrayDinamico; // Declara miArray como un puntero a int.
  3.  
  4. miArray = malloc( 5 * sizeof( int ) );.
  5.  
  6.  
La instrucción malloc reserva 5 veces el número de bytes ocupados por un dato de tipo int, y hace que el puntero miArray apunte al primer elemento reservado.

Después, las operaciones tanto con miArray como con miArrayDinamico son similares.

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip