1

簡単な質問:

32 ビット マシンでは、ポインタへのポインタ ( **p) は 4 バイトになりますか?

4

5 に答える 5

2

論理的には、ポインタは単なるメモリ アドレスです。32 ビット アドレスを持つマシンに格納されたエンティティのメモリ アドレスは、ほぼ確実に 4 バイトです。したがって、格納されたポインタのメモリ アドレスは 4 バイトです。したがって、ポインターへのポインターは 4 バイトです。これはいずれも、ISO C 標準では約束されていません。これは、ほぼすべての実装が結果として得られる方法です。

于 2012-10-04T03:55:03.053 に答える
2

はい... 4バイトになります...しかし、保証されていません。

于 2012-10-04T03:39:38.527 に答える
1

正しい。通常、ポインタは固定サイズです。32 ビット マシンでは、通常 32 ビット (= 4 バイト) です。

于 2012-10-04T03:43:24.470 に答える
1

他の人は、それが最も確実に32ビットまたは4つの8ビットバイトであるとすでに述べています。

ただし、ハードウェアとコンパイラによっては、それよりも少ない場合も多い場合もあります。

マシンが 32 ビット境界で 32 ビット単位としてのみメモリをアドレス指定できる場合、すべての 32 ビット メモリ セルの8 ビット部分 ( chars/ ) をアドレス指定してアクセスするには、より大きなポインターが必要になります。bytesここでコンパイラが異なるサイズのポインターを持たないと決定した場合、すべてのポインター (ポインターへのポインターを含む) は 34 ビット長になります。

同様に、プログラムが非常に小さく、64KB に収まる場合、コンパイラーはすべてのポインターを 16 ビットに削減できる可能性があります。

于 2012-10-04T04:04:57.080 に答える
1

通常、はい、32 ビット マシンのアドレスは 4 バイトになります。

仮定をしたくない場合の最善の策は、古いものを実行することですsizeof(p)

于 2012-10-04T03:49:16.613 に答える