Menu
Coddy logo textTech

Puntatori e array

Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 5 di 56.

Gli array e i puntatori hanno una relazione speciale in C++. Quando dichiari un array, il nome dell'array funge in realtà da puntatore al primo elemento di quell'array. Questo collegamento ti permette di usare i puntatori per lavorare con gli array in modi efficaci.

Considera questa dichiarazione di array:

int numbers[5] = {10, 20, 30, 40, 50};
int* ptr = numbers;  // ptr ora punta a numbers[0]

Qui, numbers equivale a &numbers[0] - entrambi ti danno l’indirizzo del primo elemento. Il puntatore ptr ora punta alla stessa posizione.

Una volta che hai un puntatore a un array, puoi usare l'aritmetica dei puntatori per spostarti tra gli elementi. Aggiungere 1 a un puntatore lo sposta all'elemento successivo dello stesso tipo:

ptr++;        // Ora punta a numbers[1]
ptr = ptr + 2; // Ora punta a numbers[3]

Puoi dereferenziare il puntatore in qualsiasi posizione per accedere al valore: *ptr ti dà il valore nella posizione corrente e *(ptr + 1) ti dà il valore dell'elemento successivo.

Questa relazione tra puntatori e array ti consente di scorrere gli array usando i puntatori anziché i tradizionali cicli basati sugli indici, offrendo un approccio alternativo alla scansione degli array.

challenge icon

Sfida

Facile

Crea un programma che usi un puntatore per scorrere un array e stampare ogni elemento, dimostrando la relazione tra puntatori e array.

Ti viene fornito il seguente array:

int values[6] = {15, 23, 8, 42, 17, 31};

Il tuo programma dovrebbe:

  1. Creare un puntatore chiamato ptr che punti al primo elemento dell'array values
  2. Usare l'aritmetica dei puntatori per scorrere tutti i 6 elementi dell'array
  3. Stampare ogni elemento dereferenziando il puntatore in ciascuna posizione
  4. Spostare il puntatore all'elemento successivo usando l'aritmetica dei puntatori (incrementando il puntatore)

Stampa ogni elemento su una riga separata nel seguente formato:

Element: [value]

L'output dovrebbe mostrare tutti i 6 elementi nell'ordine in cui appaiono nell'array, accedendovi tramite dereferenziazione del puntatore anziché tramite indicizzazione dell'array.

Provalo tu

#include <iostream>
using namespace std;

int main() {
    // Array dato
    int values[6] = {15, 23, 8, 42, 17, 31};
    
    // TODO: Crea un puntatore chiamato 'ptr' che punti al primo elemento dell'array
    
    // TODO: Usa un ciclo per scorrere tutti e 6 gli elementi usando l'aritmetica dei puntatori
    // TODO: Stampa ogni elemento dereferenziando il puntatore
    // TODO: Sposta il puntatore all'elemento successivo usando l'aritmetica dei puntatori
    
    return 0;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C++ online