What is the reason behind not allowing to access a bit field in C using its address, is it cause it might not be an address that is not system word aligned ..? or as it does
Bits do not have addresses. That's why you can't refer to them by address. The granularity of addressing is the char.
I guess the reasoning is that the language was design to match the architecture it targeted, and I know of no machine which allows addressing of individual bits.