Operador de dirección & en C
El Operador de dirección en C es un operador unario especial que devuelve la dirección de una variable. Se denota como el Símbolo comercial ( & ) . Este operador devuelve un valor entero que es el dirección de su operando en la memoria. Podemos usar el operador de dirección (&) con cualquier tipo de variables, matrices, cadenas, funciones e incluso punteros.
Sintaxis
El operador de dirección se utiliza generalmente como prefijo de su operando:
& operand
dónde operando puede ser una variable, matriz, función, puntero, etc.
Operador de dirección en C
Ejemplos de operadores de direcciones
Ejemplo 1:
Ejemplo simple en C para demostrar cómo utilizar el operador de dirección en nuestro programa.
C
// C program to illustrate the use of address operator> #include> > int> main()> {> > // declaring a variable> > int> x = 100;> > > // printing the address of the variable> > printf> (> 'The address of x is %p'> , &x);> > return> 0;> }> |
Producción
The address of x is 0x7fffe8f5591c
Explicación
Una variable X se definió e inicializó con el valor 100 en el programa anterior. Recuperamos la dirección de esta variable x usando el operador de dirección (&) como prefijo y la imprimimos usando la función printf().
Nota: El especificador de formato %p para imprimir la dirección en formato hexadecimal.
Generalmente, el valor devuelto por el operador de dirección se almacena en el puntero variable y luego se desreferencia el puntero para obtener el valor almacenado en esa dirección.
Ejemplo 2:
Usar un puntero para almacenar la dirección devuelta por el operador de dirección y luego desreferenciarla.
C
// C program to illustrate the use of address operator with> // pointer> #include> > int> main()> {> > // integer variable> > int> x = 1;> > // integer pointer> > int> * ptrX;> > // pointer initialization with the address of x> > ptrX = &x;> > > // accessing value of x usin pointer> > printf> (> 'Value of x: %d
'> , *ptrX);> > > return> 0;> }> |
Producción
Value of x: 1
Ejemplo 3:
Algunas funciones estándar como scanf() también requieren la dirección de la variable. En estos casos utilizamos el operador de dirección.
C
// C Program to illustrate the use of address operator with> // scanf()> #include> > int> main()> {> > // defining variable> > int> number;> > > printf> (> 'Enter any number: '> );> > // using adress operator & in scanf() to get the value> > // entered by the user in the console> > scanf> (> '%d'> , &number);> > > // priting the entered number> > printf> (> 'The entered number is: %d'> , number);> > return> 0;> }> |
Producción
Enter any number: 10 The entered number is: 10
Operador de direcciones de entidades incompatibles en C
Hay algunas entidades en C para las cuales no podemos usar el operador de dirección, es decir, no podemos obtener la dirección de esas entidades en C. Algunas de ellas son:
- Registrar variables
- Campos de bits
- Literales
- Expresiones
Aplicaciones del Operador de Direcciones (&):
El operador de dirección (&) se usa ampliamente en programas C para obtener las direcciones de diferentes entidades. Algunas de las aplicaciones principales y más comunes son:
- Pasar punteros como argumentos de función
- Aritmética de punteros
- Implementación de estructuras de datos