Compartilhar via


Declarações de ponteiro

Uma declaração"ponteiro" nomeia uma variável de ponteiro e especifica o tipo do objeto ao qual a variável aponta.Uma variável declarada como um ponteiro possui um endereço de memória.

Sintaxe

  • declarator:
    pointeroptDeclarador de direct

  • Declarador de Direct:
    identifier

    ( declarator )

    Declarador de Direct expressão de constanteopt

    Declarador de Direct ( lista de tipo de parâmetro )

    Declarador de Direct ( - lista de identificadores deopt**)**

  • pointer:
    *****lista de qualificador de tipoopt

    *****lista de qualificador de tipooptpointer

  • lista de qualificador de tipo:
    qualificador de tipo

    qualificador de tipo de lista de qualificador de tipo

O especificador de tipo retorna o tipo do objeto, que pode ser qualquer básico, estrutura ou tipo de união.Variáveis de ponteiro também podem apontar para funções, arrays e outros ponteiros.(Para informações sobre como declarar e interpretar os tipos de ponteiro mais complexos, consulte Interpretando mais complexos declaradores.)

Fazendo a especificador de tipovoid, você pode atrasar a especificação do tipo ao qual o ponteiro se refere. Como um item é conhecido como um "ponteiro para void" e é escrito como void *.Uma variável declarada como um ponteiro para void pode ser usado para apontar para um objeto de qualquer tipo.No entanto, para executar a maioria das operações no ponteiro ou no objeto para o qual ele aponta, o tipo para o qual ele aponta deve ser explicitamente especificado para cada operação.(Variáveis do tipo char * e o tipo de void * são compatíveis com a atribuição sem uma conversão de tipo.) Tal conversão pode ser realizada com uma conversão de tipo (consulte Conversões de conversão de tipo para obter mais informações).

O qualificador de tipo pode ser uma const ou volatile, ou ambos.Elas especificam, respectivamente, que o ponteiro não pode ser modificado pelo próprio programa (const), ou que o ponteiro legitimamente pode ser modificado por algum processo além do controle do programa (volatile).(Consulte Qualificadores de tipo para obter mais informações sobre const e volatile.)

O declarator nomes de variável e podem incluir um modificador do tipo.Por exemplo, se declarator representa um array, o tipo do ponteiro é modificada para um ponteiro para uma matriz.

Antes de definir a estrutura, união ou tipo de enumeração, você pode declarar um ponteiro para uma estrutura, união ou tipo de enumeração.Você pode declarar o ponteiro usando a marca de estrutura ou união, conforme mostrado nos exemplos a seguir.Tais declarações são permitidos porque o compilador não precisa saber o tamanho da estrutura ou união para alocar espaço para a variável de ponteiro.

Exemplos

Os exemplos a seguir ilustram as declarações de ponteiro.

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

O message ponteiro aponta para uma variável com char tipo.

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

O pointers matriz tem 10 elementos; cada elemento é um ponteiro para uma variável com int tipo.

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

A variável de ponteiro aponta para uma matriz com 10 elementos.Cada elemento nessa matriz tem int tipo.

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

O ponteiro x podem ser modificadas para apontar para um diferente int valor, mas o valor de pontos para a qual ele não podem ser modificados.

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;

A variável y nessas declarações é declarada como um ponteiro constante para um int valor.O valor que ela aponta para pode ser modificado, mas o ponteiro para o próprio deve sempre apontar para o mesmo local: o endereço do fixed_object.Da mesma forma, z é um ponteiro constante, mas ele também é declarado para apontar para um int cujo valor não pode ser modificado pelo programa.O especificador adicional volatile indica que, embora o valor da const int apontada por z não pode ser modificado pelo programa, ele legitimamente poderia ser modificado por um processo em execução simultaneamente com o programa.A declaração do w Especifica que o programa não pode alterar o valor apontado e que o programa não pode modificar o ponteiro.

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

Este exemplo declara duas variáveis de ponteiro, next e previous, que aponte para o tipo de estrutura list.Essa declaração pode aparecer antes da definição da list estrutura digite (consulte o próximo exemplo), contanto que o list definição tem a mesma visibilidade que a declaração.

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

A variável line tem o tipo de estrutura denominado list.O list tipo de estrutura possui três membros: o primeiro membro é um ponteiro para uma char valor, o segundo é um int valor e a terceira é um ponteiro para outro list estrutura.

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

A variável record tem o tipo de estrutura id.Observe que pname é declarado como um ponteiro para outro tipo de estrutura denominado name.Essa declaração pode aparecer antes do name o tipo está definido.

Consulte também

Conceitos

Declaradores e declarações de variável