Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C / C ++で配列インデックスがゼロから始まるのはなぜですか?


配列arr[i]は*(arr + i)として解釈されます。ここで、arrは、最初の配列要素または0インデックス要素のアドレスを示します。したがって、*(arr + i)は、配列の最初の要素からiの距離にある要素を意味します。したがって、最初はiが0であり、これは配列の最初の要素を意味するため、配列インデックスは0から始まります。

これをC++で示すプログラムは次のとおりです。

#include <iostream>
using namespace std;
int main() {
   int arr[] = {5,8,9,3,5};
   int i;
   for(i = 0; i<5; i++)
   cout<< arr[i] <<" ";
   cout<<"\n";
   for(i = 0; i<5; i++)
   cout<< *(arr + i) <<" ";
   return 0;
}

出力

上記のプログラムの出力は次のとおりです。

5 8 9 3 5
5 8 9 3 5

上記のプログラムを理解しましょう。

配列arr[]には5つの要素が含まれています。これらの要素は、配列表現arr [i]および*(arr + i)のforループを使用して表示されます。得られた結果はどちらの場合も同じです。これを示すコードスニペットは次のとおりです。

int arr[] = {5,8,9,3,5};
int i;
for(i = 0; i<5; i++)
cout<< arr[i] <<" ";
cout<<"\n";
for(i = 0; i<5; i++)
cout<< *(arr + i) <<" ";

  1. C /C++での多次元配列の初期化

    多次元配列では、配列の次元は1より大きい必要があります。次の図は、次元が3 x 3x3の多次元配列のメモリ割り当て戦略を示しています。 これは、多次元配列を初期化するためのC++プログラムです。 アルゴリズム Begin    Initialize the elements of a multidimensional array.    Print the size of the array.    Display the content of the array. End 例 #include<iostream>

  2. C#配列でインデックス作成がゼロから始まるのはなぜですか?

    配列は、インデックスのメモリ内のアドレスへのポインタでした。このインデックスは、配列の最初の要素でした。ここで、インデックスは、C言語が生まれる前からのオフセットと概念のようなものです。 配列要素が0Xff000から始まり、{35,23,67,88,90}のような5つの要素があるとします。したがって、intは4バイトを使用して格納されるため、メモリ内の配列は次のようになります。 0Xff000 has 35 0Xff004 has 23 0Xff008 has 67 0Xff012 has 88 0Xff016 has 90 つまり、配列にアクセスすると、ゼロオフセットはインデックス0にな