メモリレイアウトのアレイ

  次の例を見てください:

int型 [ 5 ]。

  与えられた全て本明細書に理解5つのint型のデータを含む配列を定義します。私たちは、[0]、[1]というように、これらの要素の名前があると内部の配列の各要素にアクセスすることができます[0]、[1] ...右?

  示されるように、我々は、アレイを定義するときに名前として、コンパイラは、要素の数とメモリ素子型特異的分布に応じて、このメモリのサイズ(要素型サイズの要素数*)を決定します。試合の名前を持つこのメモリたら変更することはできません。[0]、[1]の要素ではなく、要素の名前として、配列の各要素には名前ではありません。そして今、いくつかの質問には、はsizeofキーワードのいくつかに答えるために:

  sizeof(a)の値はsizeof(INT)* 5,32、20ビットシステム。

  sizeof([0])の値はsizeof(INT)、4 32ビットシステム。

  32ビットシステムにおける値のsizeof([5])は4であり、エラーがない、なぜですか?sizeofは、ファンクションキーではありません。関数は実行時に評価され、およびsizeofキーワードは、コンパイル時に評価されます。NO [5]この要素は存在しないが、配列要素の種類に応じて決定[5]だけによって値への実際のアクセスもないが。よって[5]とエラーなしの使用。

 

   値はsizeof(&[0])は、32ビットシステム4において、それは十分に理解され、その[0]が最初のアドレスを有する要素。

  値はsizeof(&A)は、32ビットシステム4においては、ウェルアレイの最初のアドレスを取得する、ことを理解されたいです。しかし、ビジュアルC ++ 6.0で、この値は20ですが、私は間違っていると思います。

 

おすすめ

転載: www.cnblogs.com/doitjust/p/11318577.html