Riepilogo: array dinamico
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 37 di 63.
Sfida
FacileScrivi un programma C che crei un array dinamico in base all'input dell'utente, elabori i dati e dimostri una corretta gestione della memoria. Il tuo programma dovrebbe:
- Leggere dall'utente un intero
nche rappresenta il numero di elementi da memorizzare - Usare
malloc()consizeof()per allocare dinamicamente memoria per un array dininteri - Verificare se l'allocazione della memoria è riuscita: in caso contrario, stampare
Memory allocation failed!e terminare il programma - Se l'allocazione riesce, stampare
Array of size [n] created successfully! - Leggere dall'utente
nvalori interi e memorizzarli nell'array allocato - Calcolare e stampare la somma di tutti gli elementi nel formato:
Sum: [value] - Trovare e stampare il valore minimo nel formato:
Minimum: [value] - Contare quanti elementi sono maggiori della media e stampare il risultato nel formato:
Elements above average: [count] - Stampare la memoria totale utilizzata, in byte, nel formato:
Memory used: [bytes] bytes - Usare
free()per deallocare la memoria - Stampare
Memory successfully freed!per confermare la corretta deallocazione
Ricorda di includere l'header <stdlib.h> per usare malloc() e free(). Questa sfida verifica la tua comprensione completa della gestione dinamica della memoria, dall'allocazione all'utilizzo, fino alla corretta deallocazione.
Per esempio, se l'input è:
5
12 8 15 3 20L'output dovrebbe essere:
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 2
Memory used: 20 bytes
Memory successfully freed!Questa sfida completa dimostra l'intero ciclo di vita della gestione dinamica della memoria, eseguendo al contempo operazioni significative di elaborazione dei dati sull'array allocato.
Provalo tu
#include <stdio.h>
#include <stdlib.h>
int main() {
// Leggi il numero di elementi
int n;
scanf("%d", &n);
// TODO: Scrivi il tuo codice qui sotto
// 1. Alloca memoria per n interi usando malloc()
// 2. Controlla se l'allocazione è riuscita
// 3. Leggi n interi nell'array
// 4. Calcola la somma, trova il minimo, conta gli elementi sopra la media
// 5. Stampa i risultati e libera la memoria
return 0;
}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 caratteri2Puntatori 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