Declaraciones de puntero

Los nombres “de una declaración de puntero” una variable de puntero y especifican el tipo de objeto al que los puntos variables.Una variable declarada como puntero contiene una dirección de memoria.

Sintaxis

  • declarator:
    directo-declaranteoptdepointer

  • directo-declarante:
    identifier

    enumeration ) de**(**

    expresión constante**]** deopt**[** de directo-declarante

    parámetro-tipo-lista ) de**(** de directo-declarante

    identificador-listaopt**)de(** de directo-declarante

  • pointer:
    tipo-calificador-lista de*****opt

    tipo-calificador-listapointeroptde*****

  • tipo-calificador-lista:
    calificador de tipo

    calificador de tipo de la tipo-calificador-lista

El especificador de tipo proporciona el tipo de objeto, que puede ser cualquier básico, estructura, o el tipo de unión.Las variables indicadoras también pueden señalar a las funciones, las matrices, y otros punteros.(Para obtener información sobre cómo declarar y la interpretación de tipos de puntero más complejos, hace referencia a interpretación de declarantes más complejos.)

Crear el especificador de tipovoid, puede retrasar la especificación del tipo al que el puntero consulta.Este elemento se conoce como “puntero a void” y se escribe como void *.Una variable declarada como puntero a void se puede utilizar para que señale a un objeto de cualquier tipo.Sin embargo, realizar las operaciones en el puntero o en el objeto al que señala, el tipo al que señala se debe especificar explícitamente para cada operación.(Las variables de char * escrito y void * tipo son asignación-compatible sin una conversión de tipo). Este tipo de conversión se puede hacer con una conversión de tipo (vea Conversiones de la conversión de tipos para obtener más información).

el calificador de tipo puede ser const o volatile, o ambos.Se especifican, respectivamente, que el puntero no se puede modificar el programa propio (const), o que el puntero se puede modificar legítimo algún proceso más allá del control de programa (volatile).(Vea calificadores de tipo para obtener más información sobre const y volatile.)

Los nombres de declarator la variable y pueden incluir un modificador de tipo.Por ejemplo, si declarator representa una matriz, modificar el tipo de puntero para ser un puntero a una matriz.

Puede declarar un puntero a una estructura, una unión, o a un tipo de enumeración antes de definir la estructura, unión, o el tipo de enumeración.Declara el puntero mediante la etiqueta de la estructura o unión tal y como se muestra en los ejemplos siguientes.Se permiten declaraciones así porque el compilador no necesita conocer el tamaño de la estructura o unión para asignar espacio para la variable de puntero.

Ejemplos

Los ejemplos siguientes muestran declaraciones de puntero.

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

Los puntos del puntero de message a una variable con el tipo de char .

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

La matriz de pointers tiene 10 elementos; cada elemento es un puntero a una variable con el tipo de int .

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

Los puntos de la variable de puntero a una matriz con 10 elementos.Cada elemento de esta matriz tiene el tipo de int .

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

El puntero x se puede modificar para señalar a int un valor diferente, pero el valor al que se elija no puede modificarse.

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;

y variable en estas declaraciones se declara como puntero constante a un valor de int .El valor que elija puede modificar, pero el propio puntero siempre debe señalar a la misma ubicación: la dirección de fixed_object.De igual forma, z es un puntero constante, pero también se declara el punto a int cuyo valor no se puede modificar por el programa.El especificador adicional volatile indica que aunque el valor de const int indicada por z no se puede modificar el programa, podría modificar legítimo por un proceso simultáneamente al programa.La declaración de w especifica que el programa no puede cambiar el valor indicado a y que el programa no puede modificar el puntero.

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

Este ejemplo se declaran dos variables indicadoras, next y previous, que señalan al tipo listde la estructura.Esta declaración puede producir antes de que la definición del tipo de la estructura de list (vea el ejemplo siguiente), mientras la definición de tipo de list tiene la misma visibilidad que la declaración.

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

line variable tiene el tipo de estructura denominado list.el tipo de la estructura de list tiene tres miembros: el primer miembro es un puntero a un valor de char , el segundo es un valor de int , y el tercero es un puntero a otra estructura de list .

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

record variable tiene el tipo idde la estructura.Observe que pname se declara como un puntero a otro tipo de estructura denominada name.Esta declaración puede producir antes de que el tipo de name está definido.

Vea también

Conceptos

Declarantes y declaraciones de variable