0

次のコードを書きました

int num =   3;
int *ptr = #

cout << *ptr << " " << ptr << endl;

そして、次の出力を得ました。

3 0x7fff5fbff43c

これはどのようなデータ型なのか知りたかったのです。

0x7fff5fbff43c

それは...ですか

を。符号付き float データ

b. 符号付き整数データ

c. 符号なし float データ

d. 符号なし整数データ

e. サイン入りキャラクターデータ

4

3 に答える 3

6

これらのどれでもありません - それは整数へのポインタであり、説明に「データ」という単語が含まれるどの型とも異なる野獣です。

これは、base-16 で出力された符号なし整数としてのポインタの0x7fff5fbff43c単なる数値解釈です。

于 2012-05-13T05:01:50.530 に答える
3

データの種類はint *. それはあなたが言及したことのどれでもありません。それらのいずれかにキャストできる場合があります。ただし、これを実行できるかどうかは未定義であり、プラットフォームとコンパイラによって異なる場合があります。

表示のために、ostream<<は文字列に変換されます。この文字列は型に直接対応していません。operator<<関数を呼び出してostream、個別の文字、バイト文字列、またはそれらの組み合わせとして文字データを渡します。

于 2012-05-13T05:02:57.067 に答える
-1

変数ではなくメモリアドレスを表します。したがって、型なしです。ただし、このポインタが指すメモリに型があることを意味する「間接型」を指定できます(したがって、int、char、構造体などへのポインタを持つことができます...)。

indirectionを読んでください。これは興味深い概念です。

于 2012-05-13T05:06:10.743 に答える