0
#include<stdio.h>
int main()
{
float a=3.14;
char *j;
j = (char*)&a;
printf("%d\n", *j);
return 0;
}
このコードを実行すると、 '-61'という出力が得られます。 float a = 3.14をfloat a = 3に変更すると、結果は '0'になります。int a = 3に変更すると、出力として '3'が表示されます。なぜこれが起こっているのか理解できません。理由。 ありがとうございます。Cのポインタを理解する
これは、ポインタの問題ではありません。これは、いわゆる内部構造のようなものです。ポインタを理解したいだけなら、より一般的な何かをしてください。 (「従来の」とはどういう意味ですか?あなたがXへのポインタを使用している場合は、そのポインタをXへのポインタとして扱います。ここには、ポインタへのポインタがあります。 'double'を指すように設定し、' int'として '%d'を使用しています。それはまあまあです。) –
これは、異なるタイプのメモリレイアウトと関係しています。 –
ここにあります類推大文字のSを描く。その上半分を見てみよう。それは文字cのように見えることに注意してください。今度は大文字のRを描きます。その上半分を見てください。それは文字Dのように見えることに注意してください。最後に大文字Aを描きます。上半分は三角形(おそらくギリシャ文字デルタ)のように見えます。文字(S、R、A)と上半分(C、D、Delta)を見ると文字を文字と考えると意味がありませんが、形を見ると完璧な意味があります。同様に、あなたの例は数字の点では意味をなさないが、ビットと関係がある。 –