Las estructuras en C son variables que contienen varias variables nombradas en su interior. Se emplean para:
El ejemplo más típico del uso de estructuras son los puntos, una entidad única que contiene dos variables- x
e y
-. Definamos un punto en un espacio bidimensional:
struct punto { int x; int y; };
Ahora, pasamos a definir un nuevo punto . Supongamos que la función draw
recibe un punto y lo muestra por pantalla. Sin estructuras, su uso requeriría dos argumentos, cada uno para cada coordenada
/* Dibuja un punto en 10, 5 */ int x = 10; int y = 5; draw(x, y);
Utilizando estructuras, podemos pasar un único argumento de tipo punto:
/* Dibuja un punto en 10, 5 */ struct punto p; p.x = 10; p.y = 5; draw(p);
Para acceder a las variables del punto, usamos el operador punto .
.
Typedefs nos permiten asignar un nombre diferente a un tipo de dato, lo que puede ser útil cuando se trabajamos con estructuras y punteros. En este caso, nos gustaría deshacernos de la definición larga de una estructura de puntos. Podemos usar la siguiente sintaxis para eliminar la palabra clave struct
cada vez que queremos definir un nuevo punto:
typedef struct { int x; int y; } punto;
Esto nos permitirá definir un nuevo punto:
punto p;
Las estructuras también pueden contener punteros, lo que les permite mantener cadenas o punteros a otras estructuras también. Por ejemplo, podemos definir una estructura de vehículo de la siguiente manera:
typedef struct { char * marca; int modelo; } vehiculo;
Como la marca es un puntero de char, el tipo de vehículo puede contener una cadena (que, en este caso, indica la marca del vehículo).
vehiculo micoche; micoche.marca = "Ford"; micoche.modelo = 2007;
Defina una nueva estructura de datos, llamada "persona", que contiene una cadena (puntero a char) llamada nombre
, y un entero llamado edad
.