• Viernes 8 de Noviembre de 2024, 23:13

Autor Tema:  Entender ciertas sentencias en C; struct, typedef, new  (Leído 1564 veces)

leo_ydl

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Entender ciertas sentencias en C; struct, typedef, new
« en: Viernes 19 de Septiembre de 2008, 17:08 »
0
Bueno como esta en el asunto lo que pasa es que tengo varias interogantes y aunque e buscado todavia no tengo del todo claro ciertas acciones que veo que se realizan con estas funciones.

Por ejemplo con el struct, tengo cierto codigo:

struct arbol
{
   int info;
   int hi, hd;
}raiz = NULL;

Me manda un error: cannot convert "int" to "arbol"

No entiendo la razon del error.
Justo debajo tengo el siguiente codigo

typedef struct arbol *nodo;

Lo puse por lo que entendi del typedef , y entendi que era como para que cada vez que voy a referirme al arbol poner la sentencia
struct arbol z;
solo poner
arbol z;

Si estoy equivocado o no es del todo cierto esto porfavor se les agracede muchisimo la ayuda de antemano XD :lol:

Y la instruccion new ... no la entiendo para nada XD  :lol: ... lo unico que se es que separa espacio en memoria ... los tutoriales que e encontrado no me han servido de mucho en cuanto a estas 3 cosas.

Estoy haciendo la programacion en C.
Hay ciertas cosas que he visto en otros codigos como se hacen pero no entiendo el motivo ... muchas gracias por todos los aportes posibles y por la ayuda

Aqui les voy a dejar un poco del codigo que llevo hasta ahora por cualquier duda de lo que estoy haciendo.
Se trata de 1 programa de arbol binario. Lo primero que estoy haciendo es la inserción de arbol binario de busqueda.
Y me tiene al borde de  :hitcomp:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Entender ciertas sentencias en C; struct, typedef, new
« Respuesta #1 en: Sábado 20 de Septiembre de 2008, 00:55 »
0
Estas definiendo mal la estructura, y confundiendo definicion de estructura con variable, no son lo mismo, a una definicion de estructura no puedes asignarle ningun valor, en tu caso, tratas de asignarle un valor NULL a la defincion de estructura, y eso no se puede.

La forma correcta seria:
Código: Text
  1.  
  2. // Las definiciones de estructuras NO son variables
  3. typedef struct nodo
  4. {
  5. int info;
  6. int hi, hd;
  7. } arbol;
  8.  
  9. // Raiz SI es variable, y de tipo arbol,
  10. // por lo tanto, se le puede asignar el valor NULL
  11. arbol *raiz = NULL;
  12.  
  13.  

Y respecto a new, es para eso, asignar memoria, no hay otra explicacion, aunque en C no debes usar new, sino maloc, new es de C++.

la forma de utilizarlo en tu ejemplo para asignar y liberarlo seria:
Código: Text
  1.  
  2.     // Crearlo
  3.     raiz = new arbol();
  4.     // Asignarle valores
  5.     raiz->info = 0;
  6.     raiz->hi = 0;
  7.     raiz->hd = 0;
  8.     // Borrarlo
  9.     delete raiz;
  10.  
  11.  

Espero que con eso te quede claro.

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================