Online C Compiler
Apri nel compilatore

Edizione didattica italiana

Array di puntatori in C

Distingui array di puntatori, puntatori ad array e stringhe.

Apri nel compilatore

Array di puntatori in C
Distingui array di puntatori, puntatori ad array e stringhe.

int *p[3] dichiara tre puntatori a int; int (*p)[3] dichiara un puntatore a un array di tre interi. Le parentesi cambiano il raggruppamento e il significato.

Ogni elemento deve contenere un indirizzo valido prima della dereferenziazione. Gli oggetti possono essere lontani, ma devono restare vivi durante l’uso. Per stampare un indirizzo con %p, converti l’argomento in void *.

Un array di puntatori a stringhe non è una matrice rettangolare di caratteri. Usa const char * per i letterali e non modificarli. Disegna puntatori e oggetti per verificare il modello.

Codice sorgente

#include <stdio.h>

int main(void)
{
    int first = 10;
    int second = 20;
    int third = 30;
    int *items[] = {&first, &second, &third};
    size_t count = sizeof items / sizeof items[0];

    *items[1] = 25;

    for (size_t i = 0; i < count; ++i) {
        printf("items[%zu] points to %d\n", i, *items[i]);
    }

    printf("second is now %d\n", second);
    return 0;
}
Apri nel compilatore

Domande frequenti

Perché il codice e alcuni risultati restano in inglese?

Parole chiave C, identificatori, commenti del programma e output attesi restano quelli originali per preservare codice eseguibile e test coerenti. Spiegazioni e istruzioni sono tradotte.