Accessing Integer using char pointer : will Lose Binary Data !
Some Facts About Pointer Arithmetic :
- Pointer Always Stores to the memory address of the variable.
- De-Reference Means Accessing the data from the address being stored in pointer variable
- Asterisk(*) is used for De-Reference
- Memory occupied by pointer is same as memory occupied by integer variable
When Pointer is De-referenced then -
Pointer to the following type | Number of Bytes accessed by Pointer |
---|---|
Integer Data Type | 2 Bytes |
Character Data Type | 1 Byte |
Float Data Type | 4 Bytes |
Live Example of Pointer Accessing :
Suppose we assign the address of integer variable to the character pointer then some part of value will be lost while accessing the variable using character data type.
#include<stdio.h> int main() { int a=320; char *ptr; ptr=(char *)&a; printf("%d",*ptr); return(0); }
Output of the Code :
64
Explanation of the above Code :
- Memory required to store integer and character is 2 bytes and 1 byte respectively
320 = 00000001 0100000
- Representation of 320 in Binary : 00000001 0100000
- If Pointer is of Integer type , It will Access both bytes (16 bits ) .
- As Pointer is of Character Type , as stated earlier in table it will access only one byte i.e ( 0100000 )
- 0100000 is nothing but the binary Representation of 64.
Binary Representation of 64 = 0100000