Adreça de l'operador i a C
El Operador d'adreça a C és un operador unari especial que retorna l'adreça d'una variable. Es denota com el Símbol d'ampersand (&) . Aquest operador retorna un valor enter que és el adreça del seu operand en la memòria. Podem utilitzar l'operador d'adreça (&) amb qualsevol tipus de variables, matrius, cadenes, funcions i fins i tot punters.
Sintaxi
L'operador d'adreça s'utilitza generalment com a prefix del seu operand:
& operand
on operand pot ser una variable, una matriu, una funció, un punter, etc.
Operador d'adreça a C
Exemples d'operadors d'adreces
Exemple 1:
Exemple C senzill per demostrar com utilitzar l'operador d'adreça al nostre 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;> }> |
Sortida
The address of x is 0x7fffe8f5591c
Explicació
Una variable x es va definir i inicialitzar amb el valor 100 al programa anterior. Vam recuperar l'adreça d'aquesta variable x utilitzant l'operador d'adreça (&) com a prefix i la vam imprimir amb la funció printf().
Nota: L'especificador de format %p per imprimir l'adreça en forma hexadecimal.
Generalment, el valor retornat per l'operador d'adreça s'emmagatzema al fitxer punter variable i, a continuació, es desfereix el punter per obtenir el valor emmagatzemat en aquesta adreça.
Exemple 2:
Utilitzant un punter per emmagatzemar l'adreça retornada per l'operador d'adreça i després desreferenciar-la.
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;> }> |
Sortida
Value of x: 1
Exemple 3:
Algunes funcions estàndard com scanf() també requereixen l'adreça de la variable. En aquests casos, utilitzem l'operador d'adreça.
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;> }> |
Sortida
Enter any number: 10 The entered number is: 10
Adreça entitats incompatibles de l'operador a C
Hi ha algunes entitats a C per a les quals no podem utilitzar l'operador d'adreça, és a dir, no podem obtenir l'adreça d'aquestes entitats a C. Alguns d'ells són:
- Registre de variables
- Camps de bits
- Literals
- Expressions
Aplicacions de l'operador d'adreces (&):
L'operador d'adreces (&) s'utilitza àmpliament als programes C per obtenir les adreces de diferents entitats. Algunes de les aplicacions principals i més habituals són:
- Passar punters com a arguments de funció
- Aritmètica del punter
- Implementació d'estructures de dades