Riepilogo: attraversamento di un array con i puntatori
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 11 di 63.
Sfida
FacileScrivi un programma C che implementi una funzione per calcolare la somma di tutti gli elementi di un array di interi usando l’aritmetica dei puntatori e l’equivalenza tra array e puntatori. Il programma dovrebbe:
- Creare una funzione denominata
calculateSumche accetta due parametri:- Un puntatore a un intero (
int *arr) che rappresenta l’array - Un intero (
size) che rappresenta il numero di elementi nell’array
- Un puntatore a un intero (
- All’interno della funzione
calculateSum:- Inizializzare una variabile
suma 0 - Creare una variabile puntatore
ptre impostarla in modo che punti all’inizio dell’array - Usare un ciclo per scorrere l’array utilizzando l’aritmetica dei puntatori
- A ogni iterazione, aggiungere a
sumil valore puntato daptr - Incrementare il puntatore per passare all’elemento successivo
- Restituire la somma calcolata
- Inizializzare una variabile
- Nella funzione
main:- Leggere un intero
nche rappresenta la dimensione dell’array - Dichiarare un array di interi di dimensione
n - Leggere
ninteri dall’input per riempire l’array - Chiamare la funzione
calculateSumcon l’array e la sua dimensione - Stampare il risultato nel formato: "Sum: [value]"
- Leggere un intero
La funzione deve usare l’aritmetica dei puntatori per scorrere l’array: non usare la notazione di indicizzazione degli array come arr[i]. Usa invece il dereferenziamento dei puntatori e le operazioni di incremento per accedere agli elementi dell’array.
Per esempio, se l’input è:
5
10 20 30 40 50L’output dovrebbe essere:
Sum: 150Questa sfida verifica la tua comprensione di come le funzioni possano accettare array come parametri puntatore, di come usare l’aritmetica dei puntatori per scorrere gli array in modo efficiente e di come i nomi degli array vengano convertiti automaticamente in puntatori quando vengono passati alle funzioni.
Provalo tu
#include <stdio.h>
// TODO: Scrivi qui la tua funzione calculateSum
int main() {
int n;
scanf("%d", &n);
int arr[n];
// Leggi gli elementi dell'array
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// TODO: Chiama la funzione calculateSum e memorizza il risultato
// TODO: Stampa il risultato nel formato "Sum: [value]"
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