#include <stdio.h>
 
void foo( unsigned char a, 
	  unsigned char b, 
	  unsigned char c, 
	  ...  )
{
        printf( "a: %p\nb: %p\nc: %p\n", 
                (void *)&a, 
                (void *)&b, 
                (void *)&c );

        printf( "c-11: %hhu\n", *(&c - 11) );
        printf( "c-10: %hhu\n", *(&c - 10) );
        printf( "c-09: %hhu\n", *(&c -  9) );
        printf( "c-08: %hhu\n", *(&c -  8) );
        printf( "c-07: %hhu\n", *(&c -  7) );
        printf( "c-06: %hhu\n", *(&c -  6) );
        printf( "c-05: %hhu\n", *(&c -  5) );
        printf( "c-04: %hhu\n", *(&c -  4) );
        printf( "c-03: %hhu\n", *(&c -  3) );
        printf( "c-02: %hhu\n", *(&c -  2) );
        printf( "c-01: %hhu\n", *(&c -  1) );
        printf( "c+00: %hhu\n", *(&c -  0) );
        printf( "c+01: %hhu\n", *(&c +  1) );
        printf( "c+02: %hhu\n", *(&c +  2) );
        printf( "c+03: %hhu\n", *(&c +  3) );
        printf( "c+04: %hhu\n", *(&c +  4) );
        printf( "c+05: %hhu\n", *(&c +  5) );
        printf( "c+06: %hhu\n", *(&c +  6) );
        printf( "c+07: %hhu\n", *(&c +  7) );
        printf( "c+08: %hhu\n", *(&c +  8) );
        printf( "c+09: %hhu\n", *(&c +  9) );
        printf( "c+10: %hhu\n", *(&c + 10) );
        printf( "c+11: %hhu\n", *(&c + 11) );

}
 
 
 
int main(void)
{
        foo( 1, 2, 3, 4 );
 
 
        return 0;
}
