私が理解しているように、配列の要素はメモリに連続して格納され、特定の要素にアクセスするには、目的のインデックスと各要素のサイズの積と基本配列アドレスを加算して、要素のアドレスを見つけます。 。
C#のような言語では、object[]
sの配列を作成し、必要なデータ型をその中に入れることができるので、ランダムを許可しながら異なるサイズの型を使用した場合、配列の各要素はどのように均一な長さで格納(および保持)されますかアクセス?
私が理解しているように、配列の要素はメモリに連続して格納され、特定の要素にアクセスするには、目的のインデックスと各要素のサイズの積と基本配列アドレスを加算して、要素のアドレスを見つけます。 。
C#のような言語では、object[]
sの配列を作成し、必要なデータ型をその中に入れることができるので、ランダムを許可しながら異なるサイズの型を使用した場合、配列の各要素はどのように均一な長さで格納(および保持)されますかアクセス?
これは、問題の言語と、「オブジェクト」の意味によって異なります。
C#で説明したように、C#(.NET)では、object[]
に個々のオブジェクトインスタンスへの参照の配列が含まれています。配列は参照の配列です。オブジェクトインスタンスを配列の要素に割り当てる必要があります。参照のサイズは均一ですが、オブジェクトインスタンス自体は個別に保存されるため、同じサイズである必要はありません。
これは、オブジェクトインスタンス自体ではなく、「参照」または「ポインタ」の配列を格納する場合のほとんどの言語で同じです。
オブジェクトは参照型です。アドレスの値は、実際には真の要素へのポインタです。