How will you show memory representation of C variables?


Here we will see how to print the memory representation of C variables. Here we will show integers, floats, and pointers.

To solve this problem, we have to follow these steps −

  • Get the address and the size of the variable
  • Typecast the address to the character pointer to get byte address
  • Now loop for the size of the variable and print the value of typecasted pointer.

Example

#include <stdio.h>
typedef unsigned char *byte_pointer; //create byte pointer using char*
void disp_bytes(byte_pointer ptr, int len) {
    //this will take byte pointer, and print memory content
   int i;
   for (i = 0; i < len; i++)
      printf(" %.2x", ptr[i]);
   printf("
"); } void disp_int(int x) {    disp_bytes((byte_pointer) &x, sizeof(int)); } void disp_float(float x) {    disp_bytes((byte_pointer) &x, sizeof(float)); } void disp_pointer(void *x) {    disp_bytes((byte_pointer) &x, sizeof(void *)); } main() {    int i = 5;    float f = 2.0;    int *p = &i;    disp_int(i);    disp_float(f);    disp_pointer(p);    disp_int(i); }

Output

05 00 00 00
00 00 00 40
3c fe 22 00 00 00 00 00
05 00 00 00

Samual Sam
Samual Sam

Learning faster. Every day.

Updated on: 30-Jul-2019

415 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements