> Is struct sfoo aligned? if yes/no why?
structs are always aligned. They're usually aligned to match the alignment of the member with the most restrictive alignment.
By removing the int, you removed the need to make the struct 4-byte aligned, so it just dropped back to the alignment for a char.
> 3. Is to possible to store any value in the padded bits?
Not in any portable manner it isn't.
> 1. what value shld i pass to size_t?
You use offsetof like
posOfMember = offsetof( struct foo, aMember );
> 2. when i remove '&' from the macro i got a segfault, why?
Because you really do end up dereferencing a NULL pointer!
> Is there any macro to disable structure padding?
That depends on your compiler, so you need to read the manual for your compiler to find out.
Some compilers use #pragma to achieve this.