char a[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};
int b = *(int*)&a[0];
int c = *(int*)&a[1];

b 0x44332211  // 非常によくわかる。リトルエンディアンだから
c 0x22554433  // エンディアンのせい?アラインメントのせい?
ってなります!

エンディアンの関係がよくわかりません!