Compartir a través de


Direccionamiento indirecto y Dirección- de Operators

El operador de direccionamiento indirecto (*) tiene acceso a un valor indirectamente, mediante un puntero.El operando debe ser un valor de puntero.El resultado de la operación el valor dirigido por el operando; es decir, el valor de la dirección a la que el operando señala.El tipo del resultado es el tipo que las direcciones de operando.

Si los puntos de operando a una función, el resultado es un designador de función.Si señala a una ubicación de almacenamiento, el resultado es un valor l que señala la ubicación de almacenamiento.

Si el valor de puntero no es válido, el resultado es indefinido.La lista siguiente incluye algunas de las condiciones más comunes que reemplazan un valor de puntero.

  • El puntero es un puntero NULL.

  • El puntero especifica la dirección de un elemento local que no está visible en el momento de la referencia.

  • El puntero especifica una dirección donde sea inadecuado alineadas para el tipo de objeto designado.

  • El puntero especifica una dirección no utilizada por el programa que se ejecuta.

El operador de dirección (y) proporciona la dirección del operando.El operando del operador de dirección puede ser un designador de función o un valor l que señala un objeto que no es un campo de bits y no se declara con el especificador de clase de almacenamiento de Registrarse .

El resultado de la operación de dirección es un puntero al operando.El tipo alocución por el puntero es el tipo del operando.

El operador de dirección se puede aplicar a las variables con fundamentalmente, estructura, o tipos de unión que se declaran en el nivel de archivo-ámbito, o a las referencias subscripted de la matriz.En estas expresiones, una expresión constante que no incluye el operador de dirección se puede agregar o quitar de la expresión de dirección.

Ejemplos

los ejemplos siguientes utilizan estas declaraciones:

int *pa, x;
int a[20];
double d;

Esta instrucción utiliza el operador:

pa = &a[5];

El operador de dirección (y) toma la dirección del sexto elemento de matriza.El resultado se almacena en la variable de puntero pa.

x = *pa;

Se utiliza el operador de direccionamiento indirecto (*) de este ejemplo para tener acceso al valor de int en la dirección almacenada en pa.El valor asignado a la variable de entero x.

if( x == *&x )
    printf( "True\n" );

Este ejemplo imprime la palabra True, que muestra que el resultado de aplicar el operador de direccionamiento indirecto a la dirección de x es igual que x.

int roundup( void );     /* Function declaration */

int  *proundup  = roundup;
int  *pround  = &roundup;

La función roundup se declara una vez, dos punteros a roundup se declaran e inicializan.El primer puntero, proundup, inicializa sólo con el nombre de la función, mientras que el segundo, pround, utiliza el operador en la inicialización.las inicializaciones son equivalentes.

Vea también

Referencia

Operador de direccionamiento indirecto: *

Dirección-de Operator: y