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

C /C++で範囲外の配列にアクセスする


Javaなどの言語では、 java.lang.ArrayIndexOutOfBoundsExceptionなどの例外 配列が範囲外にアクセスされた場合に発生する可能性があります。ただし、Cにはそのような機能はなく、配列が範囲外にアクセスされると、未定義の動作が発生する可能性があります。

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

#include <stdio.h>
int main() {
   int arr[] = {1,2,3,4,5};
   printf("The elements of array : ");
   for(int i = 0; i<6; i++)
   printf(" %d",arr[i]);
   return 0;
}

出力

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

The elements of array : 1 2 3 4 5 32765

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

配列arrは、添え字4までのみ値を割り当てています。したがって、配列要素が出力されると、arr[5]はガベージ値になります。これを示すコードスニペットは次のとおりです。

int arr[] = {1,2,3,4,5};
printf("The elements of array : ");
for(int i = 0; i<6; i++)
printf(" %d",arr[i]);

  1. マージソートを使用して配列内の反転をカウントするC/C ++プログラム?

    指定された配列をソートするために発生する反転の数は、反転数と呼ばれます。反転問題は、マージソートアルゴリズムを使用して解決できる古典的な問題です。この問題では、v左側にある要素よりも多くのすべての要素をカウントし、そのカウントを出力に追加します。 ThisLogicは、マージソートのマージ関数内で実行されます。 トピックをよりよく理解するために、例を見てみましょう。マージプロセスに関係する2つのサブアレイについて考えてみましょう- Input: arr[] = { 1, 9, 6, 4, 5} Output: Inversion count is 5 説明

  2. 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>