logo

Cアレイ

配列は、連続したメモリ位置に格納されている同様のタイプのデータ項目の集合として定義されます。配列は C プログラミング言語の派生データ型で、int、char、double、float などのプリミティブ型のデータを格納できます。また、ポインター、構造体、構​​造体などの派生データ型のコレクションを格納する機能もあります。配列は、インデックス番号を使用して各データ要素にランダムにアクセスできる最も単純なデータ構造です。

同様の要素を格納する必要がある場合は、C 配列が役立ちます。たとえば、6 つの科目の生徒の成績を保存したい場合、異なる科目の成績に対して異なる変数を定義する必要はありません。その代わりに、各主題のマークを連続したメモリ位置に保存できる配列を定義できます。

配列を使用すると、要素に簡単にアクセスできます。配列の要素にアクセスするには、数行のコードのみが必要です。

配列のプロパティ

配列には次のプロパティが含まれます。

  • 配列の各要素は同じデータ型で、同じサイズ (つまり int = 4 バイト) を持ちます。
  • 配列の要素は連続したメモリ位置に格納され、最初の要素は最小のメモリ位置に格納されます。
  • 指定されたベース アドレスとデータ要素のサイズを使用して配列の各要素のアドレスを計算できるため、配列の要素にランダムにアクセスできます。

C配列の利点

1) コードの最適化 : データにアクセスするためのコードが少なくなります。

2) 横断のしやすさ : for ループを使用すると、配列の要素を簡単に取得できます。

3) 仕分けのしやすさ : 配列の要素を並べ替えるには、数行のコードのみが必要です。

4) ランダムアクセス : 配列を使用すると、任意の要素にランダムにアクセスできます。

C配列の欠点

1) 固定サイズ : 配列の宣言時にどのようなサイズを定義しても、その制限を超えることはできません。したがって、後で学習する LinkedList のようにサイズが動的に増加することはありません。

C配列の宣言

C 言語では次の方法で配列を宣言できます。

 data_type array_name[array_size]; 

次に、配列を宣言する例を見てみましょう。

 int marks[5]; 

ここで、int は、 データ・タイプ 、マークは 配列名 、5は 配列サイズ

C配列の初期化

配列を初期化する最も簡単な方法は、各要素のインデックスを使用することです。インデックスを使用して配列の各要素を初期化できます。次の例を考えてみましょう。

Linuxのディレクトリ名を変更する
 marks[0]=80;//initialization of array marks[1]=60; marks[2]=70; marks[3]=85; marks[4]=75; 
C言語での配列の初期化

C配列の例

 #include int main(){ int i=0; int marks[5];//declaration of array marks[0]=80;//initialization of array marks[1]=60; marks[2]=70; marks[3]=85; marks[4]=75; //traversal of array for(i=0;i<5;i++){ printf('%d 
',marks[i]); } end of for loop return 0; < pre> <p> <strong>Output</strong> </p> <pre> 80 60 70 85 75 </pre> <h2>C Array: Declaration with Initialization</h2> <p>We can initialize the c array at the time of declaration. Let&apos;s see the code.</p> <pre> int marks[5]={20,30,40,50,60}; </pre> <p>In such case, there is <strong>no requirement to define the size</strong> . So it may also be written as the following code.</p> <pre> int marks[]={20,30,40,50,60}; </pre> <p>Let&apos;s see the C program to declare and initialize the array in C.</p> <pre> #include int main(){ int i=0; int marks[5]={20,30,40,50,60};//declaration and initialization of array //traversal of array for(i=0;i<5;i++){ printf('%d 
',marks[i]); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 20 30 40 50 60 </pre> <h2>C Array Example: Sorting an array</h2> <p>In the following program, we are using bubble sort method to sort the array in ascending order.</p> <pre> #include void main () { int i, j,temp; int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23}; for(i = 0; i<10; i++) { for(j="i+1;" j a[i]) temp="a[i];" a[i]="a[j];" a[j]="temp;" } printf('printing sorted element list ...
'); for(i="0;" i<10; printf('%d
',a[i]); < pre> <h2>Program to print the largest and second largest element of the array.</h2> <pre> #include void main () { int arr[100],i,n,largest,sec_largest; printf(&apos;Enter the size of the array?&apos;); scanf(&apos;%d&apos;,&amp;n); printf(&apos;Enter the elements of the array?&apos;); for(i = 0; i<n; i++) { scanf('%d',&arr[i]); } largest="arr[0];" sec_largest="arr[1];" for(i="0;ilargest)" else if (arr[i]>sec_largest &amp;&amp; arr[i]!=largest) { sec_largest=arr[i]; } } printf(&apos;largest = %d, second largest = %d&apos;,largest,sec_largest); } </n;></pre> <hr></10;></pre></5;i++){></pre></5;i++){>

C 配列: 初期化を伴う宣言

宣言時に c 配列を初期化できます。コードを見てみましょう。

 int marks[5]={20,30,40,50,60}; 

そのような場合には、 サイズを定義する必要はありません 。したがって、次のコードのように書くこともできます。

 int marks[]={20,30,40,50,60}; 

C で配列を宣言して初期化する C プログラムを見てみましょう。

 #include int main(){ int i=0; int marks[5]={20,30,40,50,60};//declaration and initialization of array //traversal of array for(i=0;i<5;i++){ printf(\'%d 
\',marks[i]); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 20 30 40 50 60 </pre> <h2>C Array Example: Sorting an array</h2> <p>In the following program, we are using bubble sort method to sort the array in ascending order.</p> <pre> #include void main () { int i, j,temp; int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23}; for(i = 0; i<10; i++) { for(j="i+1;" j a[i]) temp="a[i];" a[i]="a[j];" a[j]="temp;" } printf(\'printing sorted element list ...
\'); for(i="0;" i<10; printf(\'%d
\',a[i]); < pre> <h2>Program to print the largest and second largest element of the array.</h2> <pre> #include void main () { int arr[100],i,n,largest,sec_largest; printf(&apos;Enter the size of the array?&apos;); scanf(&apos;%d&apos;,&amp;n); printf(&apos;Enter the elements of the array?&apos;); for(i = 0; i<n; i++) { scanf(\'%d\',&arr[i]); } largest="arr[0];" sec_largest="arr[1];" for(i="0;ilargest)" else if (arr[i]>sec_largest &amp;&amp; arr[i]!=largest) { sec_largest=arr[i]; } } printf(&apos;largest = %d, second largest = %d&apos;,largest,sec_largest); } </n;></pre> <hr></10;></pre></5;i++){>

C 配列の例: 配列のソート

次のプログラムでは、バブル ソート方式を使用して配列を昇順にソートしています。

 #include void main () { int i, j,temp; int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23}; for(i = 0; i<10; i++) { for(j="i+1;" j a[i]) temp="a[i];" a[i]="a[j];" a[j]="temp;" } printf(\'printing sorted element list ...
\'); for(i="0;" i<10; printf(\'%d
\',a[i]); < pre> <h2>Program to print the largest and second largest element of the array.</h2> <pre> #include void main () { int arr[100],i,n,largest,sec_largest; printf(&apos;Enter the size of the array?&apos;); scanf(&apos;%d&apos;,&amp;n); printf(&apos;Enter the elements of the array?&apos;); for(i = 0; i<n; i++) { scanf(\'%d\',&arr[i]); } largest="arr[0];" sec_largest="arr[1];" for(i="0;ilargest)" else if (arr[i]>sec_largest &amp;&amp; arr[i]!=largest) { sec_largest=arr[i]; } } printf(&apos;largest = %d, second largest = %d&apos;,largest,sec_largest); } </n;></pre> <hr></10;>