PDF

Address of a Variable in C

Leave a Comment
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