Título: ¿Cual es la diferencia? Duda con punteros y typedef Publicado por: freecom4ever en 16 Febrero 2012, 03:48 am ¿Me pueden explicar la diferencia?
Entiendo que typedef crea un nuevo tipo de dato a partir de un tipo de dato anterior, en este ejemplo el tipo de dato nuevo es struct nodo. Pero el siguiente codigo que encontre utiliza un puntero (¿creo?) en mitad del typedef yo lo arregle y lo deje como debería ser (segun yo) en el Caso 2 pero no despeja mis dudas. No me queda claro (si es que existe) la linea 2 del caso 1 y de existir cual es la diferencia con respecto al siguiente. Nota: el struct esta definido previamente pero creo que no es importante al menos yo lo entiendo. Saludos! 1.- Caso 1 Código: typedef struct nodo tiponodo; 2.- Caso 2 Código: typedef struct nodo tiponodo; Por tomarte la molestia de leer el post. Una persona en alguna parte del mundo estará muy feliz :D. Muchas Gracias! Título: Re: ¿Cual es la diferencia? Duda con punteros y typedef Publicado por: Ferno en 16 Febrero 2012, 04:03 am El caso 1 es correcto.
Primero crea el tipo de dato "tiponodo". Luego crea el tipo de dato "ptiponodo" (el cual es un puntero al tipo de dato tiponodo). Por ende, en el programa, cuando quieras declarar un puntero al "tiponodo", simplemente se creará una variable de tipo "ptiponodo", ya que esa misma es un puntero a "tiponodo". Espero no haberte mareado :P Título: Re: ¿Cual es la diferencia? Duda con punteros y typedef Publicado por: do-while en 16 Febrero 2012, 04:47 am ¡Buenas!
Lo que typedef hace es crear un alias de algun tipo de dato: Código
¡Saludos! Título: Re: ¿Cual es la diferencia? Duda con punteros y typedef Publicado por: freecom4ever en 16 Febrero 2012, 05:07 am Amigo, de verdad muchas gracias.
peor lo siento por tratar de entender con manzanitas... :huh: pero hay cosas que no comprendo todavia. ¿se refiere a algo como esto? Codigo 1: Código: #include <stdio.h> No logro terminar de entender "typedef entero *puntero;" no deberia ser "*puntero" un tipo de dato? ¿porque desaparece el *? yo entiendo que el tipo de dato es puntero en el ejemplo y no *puntero... ¿porque? pd: para llegar al codigo de arriba fui probando esto hasta que llegue a eso... (puedo estar equivocado) Codigo 2: Código: #include <stdio.h> Codigo 3: Código: #include <stdio.h> ¿Codigo 3 es la traducción de Codigo 1? Muchas gracias... se pasaron n_n gracias de corazon! Título: Re: ¿Cual es la diferencia? Duda con punteros y typedef Publicado por: x64core en 16 Febrero 2012, 08:31 am Citar Código: 1.- Caso 1 en el primer caso creas un alias de tipo nodo que se llamara "tiponodo" luego creas otro alias de tipo puntero a tiponodo que se llamara "ptiponodo" en el segundo caso creas un alias de tipo estructura nodo que se llamara "tiponodo" luego la segunda linea del caso 2 haces una declaracion de un puntero de tipo "tiponodo" que se llama "ptiponodo". en conclusion en el primer caso solo haces definiciones de tipos para variables, no declaras nada de variables ni puntero, en cambio en el segundo caso; en la segunda linea haces una declaracion de un puntero a una estructura que esta a su vez es de tipo "nodo". Título: Re: ¿Cual es la diferencia? Duda con punteros y typedef Publicado por: do-while en 16 Febrero 2012, 15:11 pm Código: #include <stdio.h> Asi es. El tipo de dato es int *, que significa puntero a int. ¡Saludos! Título: Re: ¿Cual es la diferencia? Duda con punteros y typedef Publicado por: rir3760 en 16 Febrero 2012, 17:27 pm pd: para llegar al codigo de arriba fui probando esto hasta que llegue a eso... (puedo estar equivocado) No hagas eso. En su lugar lee un buen libro y en base a el avanzas, en caso de duda el mentado o foros como este.Ello porque en C cuando ocurre un error se genera "comportamiento no definido", en otras palabras todo mundo se lava las manos, puede ocurrir cualquier cosa y, por supuesto, la culpa es del programador. Sacar en base a ello conclusiones no es una buena idea. En cuanto al ultimo programa tiene dos errores en la llamada a printf: Código: printf("%d %d", *puntero &variable); Código Un saludo |