Dichiarare una struct
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 39 di 63.
Ora che hai capito cos'è una struct, è il momento di imparare a creare i tuoi tipi di struttura. Dichiarare una struct in C segue una sintassi specifica che definisce il modello per il tuo tipo di dati personalizzato.
La sintassi di base per dichiarare una struct è:
struct StructureName {
datatype member1;
datatype member2;
// ... altri membri
};Ecco come funziona ogni parte: inizi con la parola chiave struct, seguita da un nome per la tua struttura, poi elenchi tutte le variabili membro tra parentesi graffe. Ogni membro viene dichiarato proprio come una normale variabile, con il tipo di dati e il nome. Non dimenticare il punto e virgola dopo la parentesi graffa di chiusura!
Ad esempio, per creare una struttura che rappresenti un punto nello spazio 2D:
struct Point {
int x;
int y;
};Questa dichiarazione crea un nuovo tipo di dato chiamato struct Point che contiene due membri interi: x e y. Una volta dichiarato, questo tipo di struttura può essere utilizzato in tutto il programma per creare variabili che contengono informazioni sulle coordinate in modo organizzato.
Sfida
FacileCrea un programma C che definisca una struct per rappresentare un libro in un sistema bibliotecario. Il tuo programma dovrà:
- Definire una
structdenominataBookche contenga i seguenti membri:- Un intero
idper memorizzare il numero identificativo del libro - Un array di caratteri
titledi dimensione 50 per memorizzare il titolo del libro - Un intero
pagesper memorizzare il numero di pagine - Un numero in virgola mobile
priceper memorizzare il prezzo del libro
- Un intero
- Dopo aver definito la struct, stampa un messaggio di conferma:
Book struct defined successfully! - Stampa la dimensione della struct
Bookin byte usandosizeof()nel formato:Size of Book struct: [size] bytes - Stampa singolarmente la dimensione di ciascun membro:
Size of id: [size] bytesSize of title: [size] bytesSize of pages: [size] bytesSize of price: [size] bytes
Questa sfida verifica la tua comprensione della sintassi di dichiarazione delle struct, incluso l'uso corretto della parola chiave struct, le dichiarazioni dei membri con tipi di dati appropriati e il punto e virgola dopo la parentesi graffa di chiusura. Esplorerai anche come C alloca la memoria per i membri delle struct usando l'operatore sizeof().
Ricorda che i valori esatti delle dimensioni possono variare a seconda dell'architettura del tuo sistema, ma la sintassi della definizione della struct deve essere corretta affinché il programma venga compilato ed eseguito correttamente.
Provalo tu
#include <stdio.h>
int main() {
// TODO: Definisci qui la tua struct Book
// Stampa il messaggio di conferma
printf("Book struct defined successfully!\n");
// TODO: Stampa la dimensione della struct Book e dei suoi membri
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