だから私は、アーキテクチャのエンディアンがどのように見つかったのかといういくつかの例を見ました。 intデータ型を指す整数ポインタがあるとします。そして、int値が0x010A0B12だとしましょう。リトルエンディアンアーキテクチャでは、最下位バイト、すなわち12が最下位メモリアドレスに格納されます。したがって、4バイト整数の最下位バイトは12になります。型キャストcharポインタを整数ポインタ
今すぐチェックしてください。 charポインタpを宣言し、char *への整数型ポインタをキャストしてpに格納し、pの逆参照された値を出力すると、アーキテクチャのエンディアンにヒントが得られます。それが12なら、私たちはリトルエンディアンです。 01はビッグエンディアンを意味します。これは本当に、質問の
int a = 0x010A0B12;
int *i = &a;
char *p = (char*)i;
printf("%d",*p); // prints the decimal equivalent of 12h!
カップルここに...本当にきちんと聞こえます。ポインタは厳密に型付けされているので、文字ポインタは厳密にcharデータ型を指してはいけませんか? %dで印刷するとどうなりますか?文字ではなく、%cで印刷するべきですか?
関連:http://stackoverflow.com/questions/34826036/confused-about-pointer-dereferencing?noredirect = 1&lq = 1 –