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.
Sfida
FacileCrea 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:
- Creare un puntatore chiamato
ptrche punti al primo elemento dell'arrayvalues - Usare l'aritmetica dei puntatori per scorrere tutti i 6 elementi dell'array
- Stampare ogni elemento dereferenziando il puntatore in ciascuna posizione
- 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;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Puntatori e memoria
Che cos'è un puntatore?Operatore indirizzoOperatore di dereferenziazionePuntatori nulliPuntatori e arrayMemoria dinamica con 'new'Liberare la memoria con 'delete'Riepilogo - Esercizi sui puntatori2Vettori (array dinamici)
Introduzione a std::vectorCreare un vettoreAggiungere elementiAccedere agli elementiDimensione del vettoreIterare con un ciclo forCiclo for basato su intervalloRimuovere elementiRiepilogo - Operazioni sui vettori5Progetto: strumento per l’inventario
Configurazione del progettoAggiunta e aggiornamento degli articoli3Progetto: Strumento per l’elenco delle attività
Panoramica del progettoAggiungere un’attivitàEsercitati da solo: Compilatore C++ online