ホームページ  >  記事  >  バックエンド開発  >  配列の範囲外を回避するにはどうすればよいですか?

配列の範囲外を回避するにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-06-05 18:33:001125ブラウズ

配列の範囲外を回避するには、要素にアクセスする前に範囲または境界のチェックを実行するか、センチネル値を使用します。範囲チェックではインデックスが有効な範囲内にあることを確認し、境界チェックでは単にインデックスが配列サイズを下回っていることを確認し、センチネルは配列の境界に追加の「センチネル」要素を追加します。

配列の範囲外を回避するにはどうすればよいですか?

配列の範囲外を回避する方法

配列の範囲外とは、配列の有効範囲を超えて要素にアクセスすることを指します。これにより、プログラムのクラッシュや不正な結果などの未定義の動作が発生する可能性があります。配列の範囲外を回避するためのテクニックをいくつか紹介します:

1. 範囲チェック

配列要素にアクセスする前に、インデックスが有効な範囲内にあるかどうかを確認します。たとえば、次の C++ コードは、インデックスが 0 以上で配列サイズ未満であるかどうかをチェックします。

int array[] = {1, 2, 3};
int index = 2;

if (index >= 0 && index < sizeof(array) / sizeof(array[0])) {
  // 安全地访问元素
} else {
  // 处理越界情况
}

2. 境界チェック

は、単にインデックスが配列サイズより小さいかどうかをチェックします。例:

int[] array = {1, 2, 3};
int index = 2;

if (index < array.length) {
  // 安全地访问元素
} else {
  // 处理越界情况
}

3. 実際に必要な要素よりも 1 要素大きい境界のインデックス

を使用して配列を初期化し、「センチネル」値を与えます。例:

array = [0] * (size + 1)

次に、最後の要素にセンチネル値を配置し、要素にアクセスする前にそのインデックスを確認します:

if index < size:
  # 安全地访问元素
else:
  # 处理越界情况

実用的な例:

ユーザー プログラムによって入力された数値で構成される配列を読み取る必要性を考慮します。の。一線を越えないようにするために、次の C# コードを使用できます:

Console.WriteLine("Enter the size of the array:");
int size = int.Parse(Console.ReadLine());

int[] array = new int[size];

for (int i = 0; i < array.Length; i++)
{
    Console.WriteLine($"Enter the value for index {i}:");
    array[i] = int.Parse(Console.ReadLine());
}

Console.WriteLine("The values in the array:");
for (int i = 0; i < array.Length; i++)
{
    Console.WriteLine($"{i}: {array[i]}");
}

以上が配列の範囲外を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。