• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • Conoce los Días Naranjas de PcComponentes: descuentos de hasta un 40% en tecnología. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

[Introducción al lenguaje de programación C] Estructuras (Capítulo XI)

Neur0na2

Timing Attack!
Registrado
13 Feb 2016
Mensajes
115
Puntos
0
Si en el anterior capítulo vimos los vectores, hoy veremos las estructuras structs. Las estructuras son muy similares a los vectores, la única diferencia es que los elementos almacenados pueden ser de distinto tipo, accediéndose a ellas de una manera diferente.

Supongamos que tenemos el siguiente código:

Código:
#include <stdio.h>

struct tPersonaje
{
    char nombre[30];
    unsigned int vidas, nivel, monedas;
    
};

int main(int argc, const char * argv[])
{
    struct tPersonaje personaje;
    
    printf("Introduce el nombre de tu personaje: ");
    scanf("%s", personaje.nombre);
    
    printf("Introduce el número de vidas que tienes: ");
    scanf("%d", &personaje.vidas);
    
    printf("Introduce el nivel en el que estás: ");
    scanf("%d", &personaje.nivel);
    
    printf("Introduce el número de monedas que has conseguido: ");
    scanf("%d", &personaje.monedas);
    
    printf("\nNombre del personaje: %s", personaje.nombre);
    printf("\nNivel de dificultad: %d", personaje.nivel);
    printf("\nNúmero de vidas: %d", personaje.vidas);
    printf("\nMonedas conseguidas: %d", personaje.monedas);
    printf("\n");
    
    getch();
    return 0;
}

Directo a las zonas que nos interesan:

Código:
struct tPersonaje
{
    char nombre[30];
    unsigned int vidas, nivel, monedas;
    
};

Creamos una estructura struct del tipo tPersonaje y dentro de ella almacenamos un vector de tipo char y tres variables enteras sin signo. Fijaos que en las estructuras la llave que cierra va con un punto y coma.

Código:
struct tPersonaje personaje;

Declaramos la variable del tipo tPersonaje para poder trabajar con ella a continuación en la función principal main.

Código:
printf("Introduce el nombre de tu personaje: ");
scanf("%s", personaje.nombre);
    
printf("Introduce el número de vidas que tienes: ");
scanf("%d", &personaje.vidas);
    
printf("Introduce el nivel en el que estás: ");
scanf("%d", &personaje.nivel);
    
printf("Introduce el número de monedas que has conseguido: ");
scanf("%d", &personaje.monedas);

Fijaos que para acceder a las variables dentro de las estructuras se hace con un punto, es decir, nombre de la variable definida en main, un punto y la variable a la que queremos acceder que está dentro de la estructura.

Código:
printf("\nNombre del personaje: %s", personaje.nombre);
printf("\nNivel de dificultad: %d", personaje.nivel);
printf("\nNúmero de vidas: %d", personaje.vidas);
printf("\nMonedas conseguidas: %d", personaje.monedas);
printf("\n");

En la función printf seguimos el mismo principio a la hora de acceder a las variables que están dentro de la estructura.

Es realmente sencillo como podéis observar y nos permite poder organizar los datos de una manera muy sencilla a la vez que cómoda.

Nos vemos en el siguiente capítulo, concretamente con las funciones.

Un saludo :eek:k:

Capítulo anterior
Capítulo siguiente
 
Última edición:
Las struct esas son como los objetos no?

Enviado desde mi XT1021 mediante Tapatalk
 
Más bien son estructuras de datos ;)
 
Son como un wannabe de objeto xd aunque puestos a comparar lo veo mas como un array de objetos o algo similar.
 
Técnicamente un struct es como una clase, la diferencia radica en que los struct son públicos, aunque a un struct se le puede meter métodos y atributos privados y públicos también.
 
Técnicamente un struct es como una clase, la diferencia radica en que los struct son públicos, aunque a un struct se le puede meter métodos y atributos privados y públicos también.

No en C.

Una estructura en C es una estructura de datos, donde todos los datos son públicos. No son ni una clase, ni un objeto (esto menos todavía).
 
No en C.

Una estructura en C es una estructura de datos, donde todos los datos son públicos. No son ni una clase, ni un objeto (esto menos todavía).

Será entonces solo en C++, pensaba que lo había heredado.
 
Arriba