How about something like this?
Code:
#include <stdio.h>
#include <limits.h>
void foo(void *a)
{
union uType
{
void *p;
unsigned char b [ sizeof(void*) ];
} var;
size_t i = sizeof(var.b)/sizeof(*var.b);
var.p = a;
printf("var.p = %p\n", var.p);
do
{
size_t j = CHAR_BIT;
printf("var.b[%lu]: ", (long unsigned)--i);
do
{
putchar(var.b[i] & (1 << --j) ? '1' : '0');
} while ( j );
putchar('\n');
} while ( i );
}
int main(void)
{
int x = 42;
foo(&x);
return 0;
}
/* my output
var.p = 0012FF88
var.b[3]: 00000000
var.b[2]: 00010010
var.b[1]: 11111111
var.b[0]: 10001000
*/