Location in a memory where a variable stores it's data or value is known as address of variable.
To know address of any variable C has provided a special unary operator & which is known as deference operator or address operator.
It operator is only used with variables not with the constant.
For Example:
#include<stdio.h>
int main()
{
int a = 5;
printf("Address of variable 'a' is :",&a);
return 0;
}
We cannot write: &&a because:
&&a = &(&a) = & (address of variable 'a') = & (a constant number)
And we cannot use address operator with constant.
Important points about address of variables in C:
(1)
Address of any variable in c is an unsigned integer.
It cannot be a negative number.
So in printf statement we should use ' %u ' instead of ' %d ', to print the address of any variable.
Format specifiers:
" %d " : It is used to print signed decimal number.
" %u " : It is used to print unsigned decimal number.
" %x " : It is used to print a number in hexadecimal format using 0 to 9 and a,b,c,d,e,f.
" %X " : It is used to print a number in hexadecimal format using 0 to 9 and A,B,C,D,E,F.
since, if the address of any variable will beyond the range of signed short int it will print a cyclic value.
(2)
To print the address of any variable in hexadecimal number format by printf function we should use ' %x ' or ' %X '.
(3)
A programmer cannot know at which address a variable will store the data. It is decided by compiler or operating system.
(4)
Any two variables in C cannot have same physical address.
(5)
Address of any variable reserve two bytes of memory spaces.
(6)
Address of any variable in C is not integer type so to assign an address to a integral variable we have to type cast the address.
Address arithmetic in C:
(1)
We can subtract address of any two variables.
For Example:
#include<stdio.h>
int main()
{
int a;
int b;
printf("%d",&b-&a);
return 0;
}
(2)
we cannot add, multiply, divide two address.
(3)
We can add or subtract a integer number with address.
(4)
Other operators which can be used with addresses are :
Negation operator : !
Size operator : sizeof
Type casting operator : (Type)
Deference operator : *
Logical operator : && , ||
0 comments:
Post a Comment