• 締切済み

お手数ですが

初心者的な質問かもしれませんが、宜しくお願いします。 64bitの環境で (1)アドレスは 32 bit Pointerとして扱われますでしょうか。 (1) int *p_point 構造体での【kozou】アドレスは64bitですが、構造体内でint型変数(2)のアドレスは64bitでしょうか?32bitでしょうか? ・addrはint型 ・kouzou構造体名 (2) &kouzou->addr

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★質問の意味が段々分からなくなってきましたよ。 >構造体をポインタではなくエリアで内部宣言をしているものがあるのですが、 >(2)を32bitにしたい場合はTPF_SS4のようなものがあるのでしょうか? >例)(2)struct AAAA eria_1;  ↑  エリア内部で宣言とはどういう事ですか?  配列の名前がポインタを表すように構造体も同じですよ。  名前がそのままデータの位置(ポイント)を指す=ポインタです。  よって struct AAAA eria_1; の『&eria_1』も64ビット環境ならば64ビットです。 ・変数の種類によって32ビット・ポインタや64ビット・ポインタを使い分けることは出来ません。  何か大きな思い違いをしていませんか?  質問の内容では『(1) int *p_point』は64ビット環境ならポインタは64ビットです。  構造体のメンバのアドレス演算子も64ビット環境なら64ビットで返されます。  struct {   int addr;  } kouzou;  の場合。  『&kouzou』も『&kouzou->addr』も64ビット環境ならアドレス演算したときに64ビットの  ポインタ値を返します。構造体だろうが int 型だろうが関係ありません。  こんな説明で分かりましたか? ・補足があればどうぞ。

duvetica
質問者

お礼

補足は大丈夫です。 では、ありがとうございます。 お手数かけました。。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

sizeof() を使えば、一発でわかると思います。

duvetica
質問者

お礼

はじめにそうしたかったですが、 現在ここには64bit環境がありません。 率直な意見ありがとうございます。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★過去にも似たような質問がありました。 ・http://oshiete1.goo.ne.jp/qa2633268.html→『ポインタのサイズ』  これ。  64ビット環境ならポインタはどれも64ビットになります。  http://www.marbacka.net/asm64/arkiv/variables_declaration.html  コンパイラのオプションによっても一律32ビット、64ビットを選択できたりします。  例えば VC++2003 では『/Wp64』を指定するとポインタが64ビットに対応します。 ・以上。

duvetica
質問者

お礼

ありがとうございます。参考になりました。 専門家にお聞きします。 64bit環境ではpointerアドレスは64bitになる事が分かりました。 (1)のアドレス&henも環境が64bitなんで8byteアドレスという認識ですよね。 例)(1)char hen[10]; 構造体をポインタではなくエリアで内部宣言をしているものがあるのですが、(2)を32bitにしたい場合はTPF_SS4のようなものがあるのでしょうか? 例)(2)struct AAAA eria_1;

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.1

なにを聞きたいのか良くわかりませんが、 64bit環境でのポインタ、アドレスは一律64bit。 32bit環境でのポインタ、アドレスは一律32bitです。 CPUのアーキテクチャによって決まるもので、 オブジェクト型に依存するものではありません。

duvetica
質問者

お礼

すいません。 ありがとうございました。

関連するQ&A