elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Estructuras en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Estructuras en C  (Leído 4,481 veces)
Yc

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Estructuras en C
« en: 13 Marzo 2014, 14:17 pm »

Muy wenas estoy haciendo estructuras en C:

queria saber maso menos la diferencia entre estos dos:


typedef struct coordinate
    {
        int x;
        int y;
    } Coordinate;


int main()
{
    Coordinate c[N];
}


typedef struct  {
                    int x;
                    int y;
                } Coordinate;

int main()
{
    Coordinate c[N];
}


typedef struct Coordinatei {
                        int x;
                        int y;
                    } c[N];

int main()
{
    struct coordinate c[N];
}




SI SE PUEDE VER LA NOTACION ES DIFERENETE PERO CREO QUE AL FINAL SON LA MISMA COSA O NO ENTIENDO QUE QUIERE DECIR CADA UNO, EN SI AL VER ESTO ME HE MAREADO Y YA NO ENTIENDO BIEN COMO ES LA NOTACION DEL "TYPEDEF STRUCT", les agradeceria mucho gracias


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Estructuras en C
« Respuesta #1 en: 13 Marzo 2014, 17:21 pm »

Si se puede ver la notacion es diferenete pero creo que al final son la misma cosa o no entiendo que quiere decir cada uno, en si al ver esto me he mareado y ya no entiendo bien como es la notacion del "typedef struct"
Por favor no escribas el texto en mayúsculas, dificulta la lectura y en foros como este equivale a gritar.

----

Tienes tres casos distintos, en el primero:
Código
  1. typedef struct coordinate {
  2.   int x;
  3.   int y;
  4. } Coordinate;
  5.  
  6.  
  7. int main()
  8. {
  9.   Coordinate c[N];
  10. }
Declaras la estructura "struct coordinate" y su alias "Coordinate", puedes utilizar cualquiera de los dos para la declaración, esta se realiza en la función main: "c" es un array de N elementos de tipo "Coordinate".

En el segundo:
Código
  1. typedef struct {
  2.   int x;
  3.   int y;
  4. } Coordinate;
  5.  
  6. int main()
  7. {
  8.   Coordinate c[N];
  9. }
La estructura es anónima (sin nombre, para ser exactos, sin etiqueta). De nuevo la declaración se realiza en la función main y aquí solo puedes utilizar el alias.

El tercero:
Código
  1. typedef struct Coordinatei {
  2.   int x;
  3.   int y;
  4. } c[N];
  5.  
  6. int main()
  7. {
  8.    struct coordinate c[N];
  9. }
Es mas complicado y no es valido ya que:
1) Se declara la estructura "struct Coordinatei".
2) Se declara el alias "c" como equivalente a "struct Coordinatei [N]".
Ya que no hay declaración de "struct coordinate" tu compilador debe generar un mensaje de error.

Por ultimo y solo para redondear puedes utilizar "c" como el tipo para declarar un array, por ejemplo:
Código
  1. /* Forma usual */
  2. struct Coordinatei a[N];
  3.  
  4. /* Utilizando el alias */
  5. c b;
  6.  
En ambas declaraciones el tipo es el mismo: array de N elementos de tipo "struct Coordinatei", la primera utiliza la forma usual y la segunda el alias.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Estructuras en C
« Respuesta #2 en: 13 Marzo 2014, 17:32 pm »

Estupenda explicación, como a todo novato, siempre me pareció complicado entender eso, pero luego de eso me pareció una ventaja suprema para la declaración de variables, siempre declaro estructuras con un alias, es mucho pero muchisisisisisisimo más cómodo así

slds ;D ;D
En línea


Yc

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Estructuras en C
« Respuesta #3 en: 17 Marzo 2014, 15:51 pm »

y en si lo que puse antes era algo asi, solo que me equivoque al cambiar los nombres para que salgan 3 ejemplos..........:

typedef struct nombre {
                        char nombre[M];
                        char apellido[M];
                        char fijo[M];
                        char mobil[M];
                    } Nombre[N];

int main()
{
    struct nombre Nombre[N];
    .
    .
    .
    .


y asi compila. Por eso decia que raro que salga "struct nombre Nombre [N]
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Estructuras en C
« Respuesta #4 en: 17 Marzo 2014, 16:03 pm »

NOTA: En el formulario para escribir los mensajes, tienes un compo que dice GeSHi... elige ahí C o C++ según corresponda y mete tu código dentro de las etiquetas que te va a crear... así consigues que el código aparezca coloreado y sea más legible.

si tu tienes esto:

Código
  1. typedef struct nombre
  2. {
  3.  char nombre[M];
  4. } Nombre[N];

es como decir lo siguiente:

tienes una estructura, cuyo "nombre" es "struct nombre". Esta estructura tiene un alias que es "Nombre". El contenido de esta estructura es un array de caracteres identificado como "nombre".

Como se puede ver no hay ninguna ambigüedad, aunque para que quede más claro te lo pongo en formato lista:

* identificador estructura: struct nombre
* alias de la estructura: Nombre ( el alias se corresponde a un array de N elementos )
* identificador del array de caracteres: nombre
En línea

Yc

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Estructuras en C
« Respuesta #5 en: 17 Marzo 2014, 19:15 pm »

Gracias por tu ayuda =D con eso ya me aclare todo lo que es estructuras ahora voy bien en lo que es ficheros, muchar gracias.
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Estructuras en C
« Respuesta #6 en: 18 Marzo 2014, 08:32 am »

De nada.

Suerte con tus prácticas.
En línea

Yc

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Estructuras en C
« Respuesta #7 en: 21 Marzo 2014, 09:08 am »

Hola disculpa si es mucha molestia y creo que no va al tema por aca, pero veo que eres el unico que me ayuda asi que en si solo por eso "romperia las reglas" jeje por un caso hay una manera de,nose si has visto en algunos compiladores cuando no te sale lo que quieres haces 'Debug' 'Run to cursor' y asi asi vas viendo n un 'watch' como van las variables y todo eso,asi a veces veo mis errores y aprendo mucho d eso, quedria saber si hay en los compiladores una forma de ver linea de comando donde se pueda ver estos pasos, yo uso el codeblocks todo me va bien pero no tendria idea si hay esto o derepente algun otro compilador......Ejecutar la linea de comando si lo se por el DOS pero si no me sale lo que quiero nose donde esta mi error, ese es mi problema.Espero me entiendas gracias
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Estructuras en C
« Respuesta #8 en: 21 Marzo 2014, 10:14 am »

A ver si te he entendido bien.

Estas hablando de depurar programas, no?

Si no es así no sigas leyendo jejeje.

Cuando compilas un programa puedes hacerlo en modo debug o en modo release. La diferencia entre ambos modos es que el modo release aplica una serie de optimizaciones en el código para hacerlo más rápido. El modo debug, en cambio, inserta "marcadores" en el código para poder depurarlo. En resumen, cuando compilas en modo debug, el programa es más lento y grande que si lo compilas en modo release.

Cuando tienes un programa compilado en modo debug puedes usar unos programas llamados depuradores. Un depurador es una aplicación que permite seguir la traza de la aplicación para rastrear problemas en el código. Un depurador, para poder funcionar, necesita el ejecutable y el código fuente para relacionar ambos y presentarte la información de forma amigable.

Los depuradores, por definición, no tienen interfaz gráfica, son aplicaciones de modo consola. El problema que presenta utilizar un depurador en modo consola es que navegar por el código (por ejemplo para poner breakpoints o evaluar variables) puede ser bastante tedioso y frustrante... aunque con práctica todo se consigue.

Los IDEs suelen utilizar uno de estos depuradores, lo que sucede es que te lo presentan con una interfaz gráfica que además se integra automáticamente con tu código fuente, lo que reduce muchísimo la curva de aprendizaje. Yo, a título personal, prefiero depurar a través de un IDE que depurar "a pelo". He probado las dos formas y elijo la primera.

Dicho esto, hay depuradores para todos los colores y gustos. A mi personalmente me gusta bastante el que trae el VisualStudio. Al menos comparado con el que viene con QtCreator no hay color. El de CodeBlocks aún no he tenido ocasión de utilizarlo... aún no se integra del todo bien con Qt.
En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Estructuras en C
« Respuesta #9 en: 21 Marzo 2014, 12:09 pm »

Muy buena pregunta y respuesta

si mal no tengo entendido hay errores logicos sintacticos y semanticos, ya que se habla de IDE es posible ver de alguna manera los errores semanticos, en el IDE, o ver el proceso de como ocurre este tipo de error.

Gracias.
En línea

Lo que se puede imaginar... se puede programar.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Estructuras.....
Programación C/C++
Rodri 1 2,522 Último mensaje 6 Octubre 2011, 19:46 pm
por satu
Estructuras en C++
Programación C/C++
jjrl1984 1 1,684 Último mensaje 18 Diciembre 2012, 02:27 am
por naderST
Estructuras en C
Programación C/C++
Redisteon 1 1,583 Último mensaje 10 Agosto 2013, 10:39 am
por Eternal Idol
Estructuras en C
Programación C/C++
Redisteon 4 2,212 Último mensaje 11 Agosto 2013, 19:25 pm
por amchacon
[C] Estructuras
Programación C/C++
yuna88 6 2,338 Último mensaje 16 Marzo 2014, 14:29 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines