Write a C program to show memory representation of C variables like int, float, pointer, etc.
Algorithm:
Get the address and size of the variable. Typecast the address to char pointer. Now loop for size of the variable and print the value at the typecasted pointer.
Program:
c
#include <stdio.h> typedef unsigned char *byte_pointer;
/*show bytes takes byte pointer as an argument and prints memory contents from byte_pointer
to byte_pointer + len */
void show_bytes(byte_pointer start, int len)
{ int i;
for (i = 0; i < len; i++)
printf (" %.2x", start[i]);
printf ("\n");
} void show_int( int x)
{ show_bytes((byte_pointer) &x, sizeof ( int ));
} void show_float( float x)
{ show_bytes((byte_pointer) &x, sizeof ( float ));
} void show_pointer( void *x)
{ show_bytes((byte_pointer) &x, sizeof ( void *));
} /* Driver program to test above functions */ int main()
{ int i = 1;
float f = 1.0;
int *p = &i;
show_float(f);
show_int(i);
show_pointer(p);
show_int(i);
getchar ();
return 0;
} |
Article Tags :