Share via


Dichiarazioni del puntatore

“Una dichiarazione di puntatore„ denomina una variabile puntatore e specifica il tipo di oggetto a cui punta variabili.una variabile dichiarata come puntatore utilizza un indirizzo di memoria.

Sintassi

  • declarator:
    pointersceglierediretto-dichiaratore

  • diretto-dichiaratore:
    identificatore

    ( dichiaratore )

    diretto-dichiaratore [ espressione costantescegliere**]**

    diretto-dichiaratore ( parametro-tipo-elenco )

    diretto-dichiaratore ( identificatore-elencoscegliere**)**

  • pointer:
    *****tipo-qualificatore-elencoscegliere

    *****tipo-qualificatore-elencosceglierepointer

  • tipo-qualificatore-elenco:
    tipo-qualificatore

    tipo-qualificatore dell'tipo-qualificatore-elenco

identificatore del tipo fornisce il tipo di oggetto, che può essere qualsiasi base, struttura, o un tipo di unione.Le variabili puntatori possono inoltre indicare le funzioni, matrici e altri puntatori.Per informazioni sulla dichiarazione e sull'interpretazione dei tipi di puntatore più complessi, fare riferimento a Interpretazione dei dichiaratori più complessi).

Rendere identificatore del tipo void, è possibile ritardare la specifica del tipo a cui il puntatore fa riferimento.Tale elemento è nota come “puntatore a void“e viene scritto come void *.una variabile dichiarata come puntatore a void può essere utilizzato per indicare un oggetto di qualsiasi tipo.Tuttavia, eseguire la maggior parte delle operazioni sul puntatore o sull'oggetto a cui punta, il tipo a cui punta deve essere specificato in modo esplicito per ogni operazione.(Variabili di tipo char * e tipo void * essere assegnazione-compatibile senza un cast di tipo.) Tale conversione può essere eseguita mediante un cast di tipo (vedere Conversioni di cast di tipo per ulteriori informazioni.

tipo-qualificatore può corrispondere a const o volatile, o entrambi.Questi specificano, rispettivamente, che il puntatore non può essere modificato dal programma stesso (const), o che il puntatore può essere modificato legittimamente da un processo sotto il controllo del programma (volatile).(Vedere digitare i qualificatori per ulteriori informazioni su const e volatile).

declarator denominare la variabile e può includere un modificatore di tipo.Ad esempio, se declarator rappresenta una matrice, il tipo di puntatore viene modificato per essere un puntatore a una matrice.

È possibile dichiarare un puntatore a una struttura, a un'unione, o a un tipo di enumerazione prima di definire una struttura, un'unione, o il tipo di enumerazione.Dichiarare il puntatore utilizzando il tag di unione o della struttura come illustrato negli esempi riportati di seguito.Tali dichiarazioni sono consentite in quanto il compilatore non necessario conoscere le dimensioni della struttura o un'unione di allocare spazio per la variabile puntatore.

Esempi

Negli esempi seguenti vengono illustrati le dichiarazioni del puntatore.

char *message; /* Declares a pointer variable named message */

message punti del puntatore a una variabile con char tipo.

int *pointers[10];  /* Declares an array of pointers */

pointers la matrice contiene 10 elementi, ogni elemento è un puntatore a una variabile con int tipo.

int (*pointer)[10]; /* Declares a pointer to an array of 10 elements */

I punti di variabile puntatore a matrice con 10 elementi.Ogni elemento della matrice contiene int tipo.

int const *x;      /* Declares a pointer variable, x,
                      to a constant value */ 

il puntatore x può essere modificato per indicare un diverso int il valore, ma il valore a cui punta non può essere modificato.

const int some_object = 5 ;
int other_object = 37;
int *const y = &fixed_object;
int volatile *const z = &some_object;
int *const volatile w = &some_object;

la variabile y in queste dichiarazioni è dichiarato come puntatore a costante int valore.Il valore che indica può essere modificato, ma il puntatore stesso deve sempre indicare la stessa posizione: l'indirizzo di fixed_object.Analogamente, z è un puntatore costante, ma viene dichiarato indicare int di cui valore non può essere modificato dal programma.l'identificatore aggiuntivo volatile indica che sebbene il valore di const int puntato in near z non può essere modificato dal programma, potrebbe essere modificato legittimamente da un processo in esecuzione contemporaneamente al programma.la dichiarazione di w specifica che il programma non può modificare il valore fa riferimento a e che il programma non può modificare il puntatore.

struct list *next, *previous; /* Uses the tag for list */

In questo esempio vengono dichiarate due variabili puntatori, next e previous, che puntano al tipo di struttura list.Questa dichiarazione può essere visualizzato prima della definizione di list strutturare il tipo (vedere l'esempio di seguito), purché list la definizione di tipo dispone della stessa visibilità della dichiarazione.

struct list 
{
    char *token;
    int count;
    struct list *next;
} line;

la variabile line anche il tipo di struttura di denominazione list.list il tipo di struttura dispone di tre membri: il primo membro è un puntatore a un oggetto char il valore, il secondo è int il valore e il terzo è un puntatore a un altro list struttura.

struct id 
{
    unsigned int id_no;
    struct name *pname;
} record;

la variabile record è il tipo di struttura id.si noti che pname viene dichiarato come un puntatore a un altro tipo di struttura denominata name.Questa dichiarazione può essere visualizzato prima di name il tipo è definito.

Vedere anche

Concetti

Dichiaratori e dichiarazioni delle variabili