Accedere ai membri di una struct
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 41 di 63.
Ora che sai creare variabili di tipo struct, devi imparare a lavorare con i dati memorizzati al loro interno. L’operatore punto (.) è la chiave per accedere ai singoli membri di una variabile di tipo struct e modificarli.
La sintassi per accedere ai membri di una struct è semplice:
structVariable.memberNameUsando il nostro esempio di struct Point, puoi sia leggere che scrivere i suoi membri:
struct Point p1;
// Scrittura nei membri della struct
p1.x = 10;
p1.y = 20;
// Lettura dai membri della struct
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);L'operatore punto funziona esattamente come accedere a qualsiasi altra variabile: puoi usarlo nelle assegnazioni, nelle operazioni aritmetiche, nelle chiamate di funzione o ovunque useresti una normale variabile di quel tipo. Ogni membro si comporta come una variabile indipendente del tipo dichiarato, consentendoti di manipolare i dati della struct in modo organizzato e intuitivo.
Sfida
FacileCrea un programma C che mostri come accedere ai membri di una struct e modificarli usando l'operatore punto. Il tuo programma dovrebbe:
- Definire una
structchiamataCarcon i seguenti membri:- Un intero
yearper memorizzare l'anno di produzione - Un array di caratteri
branddi dimensione 20 per memorizzare la marca dell'auto - Un intero
mileageper memorizzare il chilometraggio attuale - Un float
priceper memorizzare il prezzo dell'auto
- Un intero
- Creare una variabile
CarchiamatamyCar - Leggere i seguenti valori di input e assegnarli ai membri della struct usando l'operatore punto:
- Leggere un intero per l'anno e assegnarlo a
myCar.year - Leggere una stringa per la marca e assegnarla a
myCar.brand - Leggere un intero per il chilometraggio e assegnarlo a
myCar.mileage - Leggere un float per il prezzo e assegnarlo a
myCar.price
- Leggere un intero per l'anno e assegnarlo a
- Dopo aver letto tutti i valori, eseguire le seguenti operazioni:
- Aumentare il chilometraggio di 1000 usando
myCar.mileage += 1000; - Diminuire il prezzo di 500.0 usando
myCar.price -= 500.0;
- Aumentare il chilometraggio di 1000 usando
- Stampare le informazioni sull'auto usando l'operatore punto per accedere a ciascun membro, esattamente in questo formato:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
Questa sfida verifica la tua comprensione dell'operatore punto per leggere e scrivere i membri di una struct. Ti eserciterai ad assegnare valori ai membri di una struct, a eseguire operazioni aritmetiche su di essi e ad accedervi per l'output.
Per esempio, se l'input è:
2020
Toyota
50000
25000.50Il tuo output dovrebbe essere:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50Provalo tu
#include <stdio.h>
#include <string.h>
// TODO: Definisci qui la struct Car
int main() {
// TODO: Crea una variabile Car chiamata myCar
// Leggi i valori di input
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: Assegna i valori di input ai membri della struct usando l'operatore punto
// TODO: Modifica il chilometraggio e il prezzo come specificato
// TODO: Stampa i dettagli dell'auto usando l'operatore punto
printf("Car Details:\n");
// Stampa qui Year, Brand, Mileage e Price
return 0;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Fondamenti dei puntatori
Che cos’è un puntatore?Dichiarare i puntatoriL’operatore di indirizzo (&)L’operatore di dereferenziazione (*)Puntatori NULLRiepilogo: nozioni di base sui puntatori4Progetto: Utility di testo semplice
Panoramica del progettoConteggio dei caratteri7Strutture (struct)
Che cos'è una struct?Dichiarare una structCreare variabili structAccedere ai membri di una structInizializzare le structRiepilogo: struct dei dati dello studente2Puntatori e array
I nomi degli array come puntatoriElementi degli array e puntatoriAritmetica dei puntatoriConfrontare i puntatoriRiepilogo: attraversamento di un array con i puntatori5Puntatori e funzioni
Passaggio per valorePassare puntatori alle funzioniModificare le variabili tramite puntatoriUn esempio classico: scambiare valoriPassare array alle funzioniRiepilogo: argomenti puntatore nelle funzioni3Array di caratteri e stringhe
Stringhe come array di charIl terminatore nullInput di stringhe con scanfUso di strlen()Uso di strcpy()Uso di strcat()Uso di strcmp()Riepilogo: funzioni di base per le stringhe6Gestione della memoria
Memoria Stack vs. HeapAllocazione dinamica - malloc()Usare sizeof() per l'allocazioneVerificare il fallimento dell'allocazioneLiberare la memoria con free()Allocare con calloc()Riepilogo: array dinamico9Progetto: Inserimento semplice di un contatto
Progetto: Definire una struct ContattoFunzione per creare un contattoEsercitati da solo: Compilatore C online