That does not hold for Intel x86 architecture chips, which are perfectly happy to have unaligned integers.
As for struct members, the alignment is (of course) "implementation defined", which is the fancy way of throwing up your hands and saying "whatever". (Since C++11 we actually have alignas(), which at least gives manual control)