Inizializzare le struct
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 42 di 63.
Anche se puoi creare variabili di tipo struct e poi assegnare valori ai singoli membri, C offre un modo più pratico per impostare i valori iniziali. Puoi inizializzare una variabile di tipo struct al momento della dichiarazione usando una lista di inizializzazione racchiusa tra parentesi graffe.
La sintassi per l'inizializzazione di una struct è:
struct StructureName variableName = {value1, value2, ...};Usando il nostro esempio di struttura Point, puoi dichiararla e inizializzarla in un'unica riga chiara:
struct Point p1 = {10, 20};Questo crea una variabile Point denominata p1 con x impostato su 10 e y impostato su 20. I valori nell’elenco di inizializzazione vengono assegnati ai membri della struct nell’ordine in cui sono stati dichiarati nella definizione della struct.
Questo approccio di inizializzazione non è solo più conciso rispetto alle assegnazioni separate, ma garantisce anche che la tua struct inizi con valori significativi anziché con dati casuali privi di senso. È particolarmente utile quando conosci i valori iniziali in fase di compilazione e vuoi creare in modo efficiente variabili struct pronte all'uso.
Sfida
FacileCrea un programma C che mostri l’inizializzazione di struct usando liste di inizializzazione. Il tuo programma deve:
- Definire una
structdenominataEmployeecon i seguenti membri:- Un intero
idper memorizzare l’ID del dipendente - Un array di caratteri
departmentdi dimensione 15 per memorizzare il nome del dipartimento - Un intero
yearsOfServiceper memorizzare gli anni di servizio - Un float
salaryper memorizzare lo stipendio del dipendente
- Un intero
- Creare tre variabili
Employeeusando liste di inizializzazione con i seguenti dati:emp1: ID 101, dipartimento "Engineering", 5 anni di servizio, stipendio 75000.50emp2: ID 102, dipartimento "Marketing", 3 anni di servizio, stipendio 65000.25emp3: ID 103, dipartimento "Sales", 8 anni di servizio, stipendio 80000.75
- Stampare le informazioni di ciascun dipendente in questo formato esatto:
Employee 1:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 2:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 3:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]
- Calcolare e stampare lo stipendio totale di tutti e tre i dipendenti nel formato:
Total Salary: [total] - Calcolare e stampare la media degli anni di servizio nel formato:
Average Years of Service: [average]
Questa sfida verifica la tua comprensione dell’inizializzazione delle struct usando liste di inizializzazione, in cui dichiari e inizializzi le variabili struct su una sola riga. I valori nella lista di inizializzazione devono essere forniti nello stesso ordine in cui i membri sono stati dichiarati nella definizione della struct.
L’output previsto deve essere:
Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33Provalo tu
#include <stdio.h>
// TODO: Definisci qui la struct Employee
int main() {
// TODO: Crea tre variabili Employee usando liste di inizializzazione
// TODO: Stampa le informazioni per ogni dipendente
// TODO: Calcola e stampa lo stipendio totale e la media degli anni di servizio
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