How to print out the memory contents of a variable in C?

c, c++, double, memory

Solution

double d = 234.5;

/* 1. use a union */
union u {
    double d;
    unsigned char c[sizeof(double)];
};
union u tmp;
size_t i;
tmp.d = d;
for (i=0; i < sizeof(double); ++i)
    printf("%02x\n", tmp.c[i]);

/* 2. memcpy */
unsigned char data[sizeof d];
size_t i;
memcpy(data, &d, sizeof d);
for (i=0; i < sizeof d; ++i)
    printf("%02x\n", data[i]);

/* 3. Use a pointer to an unsigned char to examine the bytes */
unsigned char *p = (unsigned char *)&d;
size_t i;
for (i=0; i < sizeof d; ++i)
    printf("%02x\n", p[i]);

All the methods show you the bytes—but the same `double` value may print the bytes differently on different systems, e.g., due to different encodings (rare), or different endianness.

Problem

Suppose I do a ``` double d = 234.5; ``` I want to see the memory contents of `d` [the whole 8 bytes] How do I do that?

Original source