Título: [Ayuda] Estructuras Publicado por: Zodiak98 en 21 Agosto 2013, 03:55 am Bueno quisiera saber cual seria la diferencia entre hacer/programar/construir una estructura de la siguiente y de la otra manera:
Código Esta es la manera más "común" (sin el typedef): Código
Alguien me explica de que sirve el typedef como prefijo de las estructuras? Perdonen mi ignorancia. Una idea que me hice es que en C tienes hacer lo siguiente: Código Para poder crear objetos tal como se hace en C++, ya que si no se hace, los objetos se instancian de la siguiente manera: Código
Supongo que es para evitar eso... pero no estoy seguro alguien me echa una mano? :D Título: Re: [Ayuda] Estructuras Publicado por: flony en 21 Agosto 2013, 05:20 am bue...me estoy metiendo en un terreno que no conozco muy bien, el typedef es para hacer clases que si quiero sirve para int float double etc...o sea para todo tipo de numero, por dar un ejemplo con números ....para struct no sabia y menos para c...se que sirve en c++
Título: Re: [Ayuda] Estructuras Publicado por: kaltorak en 21 Agosto 2013, 05:57 am Hola Zodiak98
Mira la instrucción "typedef" sirve para renombrar un tipo de dato. Su formato es: Código
para que lo entiendas mejor mira este ejemplo: Código
De este modo si ahora quisiéramos crear un entero podríamos hacerlo de 2 maneras. Usando el nuevo nombre que le hemos otorgado en la linea anterior al tipo de variable "int": Código
o como siempre: Código
Explicado esto vamos con tu pregunta, si lo pones antes de la declaración de una estructura "struct" lo único que estas haciendo es mejorar la legibilidad de tu programa, por que cuando necesites generar una estructura de ese tipo, no tendrás que incluir la palabra reservada "struct" delante del nombre que le diste a dicha estructura, te pongo el ejemplo que usaste para hacer la pregunta. Código
Ahora cada vez que quieras declarar una nueva estructura del tipo "miestructura" lo harás de esta manera. Código
Pero si no incluimos la instrucción "typedef" delante como vemos en el siguiente ejemplo: Código
Ahora cuando quieras declarar una nueva estructura del tipo "miestructura" deberás incluir la palabra reservada "struct" delante de la declaración de esta manera: Código
Para terminar lo que hacemos al usar "typedef" esa hacer el código más fácil de leer. Un saludo Kaltorak. Título: Re: [Ayuda] Estructuras Publicado por: do-while en 21 Agosto 2013, 11:26 am ¡Buenas!
Como ya te han dicho, typedef (http://www.cplusplus.com/doc/tutorial/other_data_types/) sirve para crear alias de los distintos tipos de dato que puedas tener. De todas formas hacer esto Código es algo que siempre me ha parecido odioso por cuestiones de legibilidad de código. Código
Queda mucho mas ordenado, primero defines un struct, y luego abrevias la notación, y puedes utilizar tanto la notacion un_struct una_variable como struct un_struct una_variable, si quieres dejar claro que el dato que estás usando es un struct. Si lo haces de la otra forma nunca podrás utilizar la notación struct un_struct ya que no habrás definido un struct con nombre, simplemente le has dado un nombre alternativo a un struct anónimo... Ya te digo que esto simplemente es mi opinión, cada uno tiene sus gustos, pero como ya te he dicho, me parece que queda mas claro todo definiendo primero un struct con nombre, y luego redefiniendo la notación, que directamente dándole un alias a un struct sin mombre. ¡Saludos! Título: Re: [Ayuda] Estructuras Publicado por: Zodiak98 en 21 Agosto 2013, 17:50 pm Hola Zodiak98 Mira la instrucción "typedef" sirve para renombrar un tipo de dato. Su formato es: Código
para que lo entiendas mejor mira este ejemplo: Código
De este modo si ahora quisiéramos crear un entero podríamos hacerlo de 2 maneras. Usando el nuevo nombre que le hemos otorgado en la linea anterior al tipo de variable "int": Código
o como siempre: Código
Explicado esto vamos con tu pregunta, si lo pones antes de la declaración de una estructura "struct" lo único que estas haciendo es mejorar la legibilidad de tu programa, por que cuando necesites generar una estructura de ese tipo, no tendrás que incluir la palabra reservada "struct" delante del nombre que le diste a dicha estructura, te pongo el ejemplo que usaste para hacer la pregunta. Código
Ahora cada vez que quieras declarar una nueva estructura del tipo "miestructura" lo harás de esta manera. Código
Pero si no incluimos la instrucción "typedef" delante como vemos en el siguiente ejemplo: Código
Ahora cuando quieras declarar una nueva estructura del tipo "miestructura" deberás incluir la palabra reservada "struct" delante de la declaración de esta manera: Código
Para terminar lo que hacemos al usar "typedef" esa hacer el código más fácil de leer. Un saludo Kaltorak. Heheheh gracias! No estaba seguro de que fuera eso pero ahora ya estoy tranquilo xD. ¡Buenas! Como ya te han dicho, typedef (http://www.cplusplus.com/doc/tutorial/other_data_types/) sirve para crear alias de los distintos tipos de dato que puedas tener. De todas formas hacer esto Código es algo que siempre me ha parecido odioso por cuestiones de legibilidad de código. Código
Queda mucho mas ordenado, primero defines un struct, y luego abrevias la notación, y puedes utilizar tanto la notacion un_struct una_variable como struct un_struct una_variable, si quieres dejar claro que el dato que estás usando es un struct. Si lo haces de la otra forma nunca podrás utilizar la notación struct un_struct ya que no habrás definido un struct con nombre, simplemente le has dado un nombre alternativo a un struct anónimo... Ya te digo que esto simplemente es mi opinión, cada uno tiene sus gustos, pero como ya te he dicho, me parece que queda mas claro todo definiendo primero un struct con nombre, y luego redefiniendo la notación, que directamente dándole un alias a un struct sin mombre. ¡Saludos! Tienes mucha razón, bueno a mí se me hace más entendible colocando a la hora de instanciar objetos el prefijo struct, no se, supongo que se me hace más cómodo y más entendible como tú dices. :B Título: Re: [Ayuda] Estructuras Publicado por: Zodiak98 en 21 Agosto 2013, 17:51 pm Bueno me puse a practicar como me dijeron y este es mi código:
Código Y me tira estos errores: Código: error: 'un_struct' undeclared (first use in this function)| Alguien me explica que estoy haciendo mal? u.u Título: Re: [Ayuda] Estructuras Publicado por: eferion en 21 Agosto 2013, 19:01 pm Código
Esa línea está mal debería ser Código
o bien Código
Con la segunda opción, como te han comentado antes, tendrías las dos opciones disponibles: Código
Título: Re: [Ayuda] Estructuras Publicado por: 0xDani en 21 Agosto 2013, 23:06 pm Y no es mejor así directamente?
Código
Título: Re: [Ayuda] Estructuras Publicado por: Zodiak98 en 21 Agosto 2013, 23:47 pm Gracias a los 2 últimos comentarios ;)
Código Me funciono perfecto! Gracias! ;) Pero una pregunta: Hacer esto: Código
Es solo para darle orientación al programador? Pero en realidad no hay diferencia entre asignarle o no un nombre o sí? Supongo que no... es solo para darle una orientación más al programador y hacerlo más entendibe. :3 Título: Re: [Ayuda] Estructuras Publicado por: kaltorak en 22 Agosto 2013, 07:53 am Ups si fallo mio lo siento, cuando puse tu ejemplo no me di cuenta de que estaba mal puesto :-[
Ya lo he corregido Un saludo kaltorak. Título: Re: [Ayuda] Estructuras Publicado por: do-while en 22 Agosto 2013, 16:56 pm ¡Buenas!
Veo que vas un poco liado. Vamos al principio (y entonces Dios separo la luz de las tinieblas y se hicieron las compañías eléctricas y vieron que aquello era bueno y obtenían beneficio...) No tan al principio... (Lo siento mucho, estudiar me sienta francamente mal (¡¡Españoles...!! (No tan francamente mal))) Ya. Stop. Vamos a ver. Olvídate de los typedef. Cuando tu quieres crear un conjunto mixto de datos que están relacionados en una única entidad ¿qué haces? creas un struct (hasta aquí todo evidente). La declaración del struct puedes hacerla de dos formas: Código
Cuando quieres crear un tipo de dato, si declaras el struct de la primera manera, haces Código , y de la segunda forma no hay manera de declarar variables, ya que no tenemos forma de llamar al struct. Pues no, esto último es mentira. Es cierto que no podemos declarar variables de ese tipo de dato en cualquier parte del código, pero cuando creamos un struct anónimo podemos declarar una lista de variables justo entre la llave que cierra el cuerpo del struct y los dos puntos que indicar que ahí termina la definición del struct: Código
Estas serán las únicas variable de ese tipo de dato que puedas declarar y serán globales. Ahora con el typedef la cosa cambia un poco. Podemos definir como al principio un struct con nombre y darle luego otra notación mas breve: Código Al igual que haciamos al declarar variables del struct anonimo, podemos definir una lista de alias entre la llave final y los dos puntos: Código Y podemos hacer lo mismo con un struct anónimo. En este último caso, lo que haya entre la última llave y el punto coma se considerará un alias, no una variable global del tipo del struct anónimo: Código
Espero que te haya quedado claro. ¡Saludos! |