問題は簡単です。私が理解しているように、GCC は、32 ビット環境で char がバイト単位で整列され、int が 4 バイト単位で整列されることを維持しています。また、C99 標準 6.3.2.3 についても認識しています。これは、位置合わせされていないポインター型の間でキャストすると、未定義の操作が発生することを示しています。C の他の標準は、これについて何と言っていますか? ここには多くの経験豊富なコーダーもいます。
int *iptr1, *iptr2;
char *cptr1, *cptr2;
iptr1 = (int *) cptr1;
cptr2 = (char *) iptr2;