How will you show memory representation of C variables?

In C programming, understanding the memory representation of variables is crucial for debugging and low-level programming. This involves examining how different data types are stored in memory at the byte level.

Syntax

typedef unsigned char *byte_pointer;
void display_bytes(byte_pointer ptr, int length);

Algorithm

To display memory representation of C variables, follow these steps −

  • Get the address and size of the variable using & operator and sizeof()
  • Typecast the address to unsigned char* to access individual bytes
  • Loop through each byte and print its hexadecimal value

Example: Memory Representation of Different Data Types

This example demonstrates how integers, floats, and pointers are stored in memory −

#include <stdio.h>

typedef unsigned char *byte_pointer;

void disp_bytes(byte_pointer ptr, int len) {
    int i;
    for (i = 0; i < len; i++) {
        printf(" %.2x", ptr[i]);
    }
    printf("<br>");
}

void disp_int(int x) {
    printf("Integer %d: ", x);
    disp_bytes((byte_pointer) &x, sizeof(int));
}

void disp_float(float x) {
    printf("Float %.1f: ", x);
    disp_bytes((byte_pointer) &x, sizeof(float));
}

void disp_pointer(void *x) {
    printf("Pointer: ");
    disp_bytes((byte_pointer) &x, sizeof(void *));
}

int main() {
    int i = 5;
    float f = 2.0;
    int *p = &i;
    
    printf("Memory representation of variables:<br>");
    disp_int(i);
    disp_float(f);
    disp_pointer(p);
    
    return 0;
}
Memory representation of variables:
Integer 5: 05 00 00 00
Float 2.0: 00 00 00 40
Pointer: 3c fe 22 00 00 00 00 00

Key Points

  • Little-endian format: Most systems store multi-byte values with the least significant byte first
  • Integer 5: Stored as 05 00 00 00 in 4 bytes
  • Float 2.0: Stored in IEEE 754 format as 00 00 00 40
  • Pointer size: Varies by system architecture (4 bytes on 32-bit, 8 bytes on 64-bit)

Conclusion

Memory representation visualization helps understand data storage formats and endianness. This technique is valuable for system programming and debugging memory-related issues in C applications.

Updated on: 2026-03-15T10:36:19+05:30

608 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements