Acceso a los miembros de un struct
Parte de la sección Logic & Flow del Journey de C de Coddy — lección 41 de 63.
Ahora que puedes crear variables de tipo struct, necesitas aprender a trabajar con los datos almacenados dentro de ellas. El operador punto (.) es la clave para acceder y modificar los miembros individuales de una variable struct.
La sintaxis para acceder a los miembros de una estructura es sencilla:
structVariable.memberNameUsando nuestro ejemplo de struct Point, puedes tanto leer como escribir en sus miembros:
struct Point p1;
// Escribiendo en los miembros de la estructura
p1.x = 10;
p1.y = 20;
// Leyendo de los miembros de la estructura
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);El operador de punto funciona exactamente igual que acceder a cualquier otra variable: puedes usarlo en asignaciones, operaciones aritméticas, llamadas a funciones o en cualquier lugar donde usarías una variable regular de ese tipo. Cada miembro se comporta como una variable independiente de su tipo declarado, lo que te permite manipular los datos de la struct de una manera organizada e intuitiva.
Desafío
FácilCrea un programa en C que demuestre cómo acceder y modificar los miembros de una estructura utilizando el operador punto. Tu programa debe:
- Definir un
structllamadoCarcon los siguientes miembros:- Un entero
yearpara almacenar el año de fabricación - Un arreglo de caracteres
brandcon tamaño 20 para almacenar la marca del coche - Un entero
mileagepara almacenar el kilometraje actual - Un flotante
pricepara almacenar el precio del coche
- Un entero
- Crear una variable de tipo
CarllamadamyCar - Leer los siguientes valores de entrada y asignarlos a los miembros de la estructura utilizando el operador punto:
- Leer un entero para el año y asignarlo a
myCar.year - Leer una cadena para la marca y asignarla a
myCar.brand - Leer un entero para el kilometraje y asignarlo a
myCar.mileage - Leer un flotante para el precio y asignarlo a
myCar.price
- Leer un entero para el año y asignarlo a
- Después de leer todos los valores, realiza las siguientes operaciones:
- Incrementar el kilometraje en 1000 usando
myCar.mileage += 1000; - Disminuir el precio en 500.0 usando
myCar.price -= 500.0;
- Incrementar el kilometraje en 1000 usando
- Imprimir la información del coche utilizando el operador punto para acceder a cada miembro en este formato exacto:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
Este desafío pone a prueba tu comprensión del operador punto tanto para leer como para escribir en los miembros de una estructura. Practicarás la asignación de valores a los miembros de la estructura, la realización de operaciones aritméticas sobre ellos y el acceso a los mismos para su salida.
Por ejemplo, si la entrada es:
2020
Toyota
50000
25000.50Tu salida debería ser:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50Hoja de referencia
El operador punto (.) se utiliza para acceder y modificar miembros individuales de una variable struct.
Sintaxis para acceder a los miembros de una struct:
structVariable.memberNameEjemplo de lectura y escritura en miembros de una struct:
struct Point p1;
// Escribiendo en los miembros de la struct
p1.x = 10;
p1.y = 20;
// Leyendo de los miembros de la struct
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);El operador punto puede utilizarse en asignaciones, operaciones aritméticas, llamadas a funciones o en cualquier lugar donde se utilizaría una variable normal de ese tipo. Cada miembro se comporta como una variable independiente de su tipo declarado.
Pruébalo tú mismo
#include <stdio.h>
#include <string.h>
// TODO: Define la estructura Car aquí
int main() {
// TODO: Crea una variable Car llamada myCar
// Leer los valores de entrada
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: Asigna los valores de entrada a los miembros de la estructura usando el operador punto
// TODO: Modifica el kilometraje y el precio según lo especificado
// TODO: Imprime los detalles del coche usando el operador punto
printf("Car Details:\n");
// Imprime el Año, Marca, Kilometraje y Precio aquí
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres7Estructuras (structs)
¿Qué es un struct?Declaración de un structCreación de variables de tipo structAcceso a los miembros de un structInicialización de structsResumen: Struct de datos de estudiantes2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenas