>백엔드 개발 >C++ >범위를 벗어난 배열을 피하는 방법은 무엇입니까?

범위를 벗어난 배열을 피하는 방법은 무엇입니까?

WBOY
WBOY원래의
2024-06-05 18:33:001346검색

배열이 범위를 벗어나는 것을 방지하려면 요소에 액세스하기 전에 범위 또는 경계 검사를 수행하거나 센티넬 값을 사용할 수 있습니다. 범위 검사는 인덱스가 유효한 범위 내에 있는지 확인하고, 경계 검사는 단순히 인덱스가 배열 크기보다 작은지 확인하며, 센티널은 배열 경계에 추가 "센티넬" 요소를 추가합니다.

범위를 벗어난 배열을 피하는 방법은 무엇입니까?

배열이 범위를 벗어나는 것을 방지하는 방법

배열이 범위를 벗어난다는 것은 배열의 유효한 범위를 벗어난 요소에 액세스하는 것을 의미합니다. 이로 인해 프로그램 충돌이나 잘못된 결과 등 정의되지 않은 동작이 발생할 수 있습니다. 다음은 범위를 벗어난 배열을 방지하는 몇 가지 기술입니다.

1. 범위 확인

배열 요소에 액세스하기 전에 인덱스가 유효한 범위 내에 있는지 확인하세요. 예를 들어, 다음 C++ 코드는 인덱스가 0보다 크거나 같고 배열 크기보다 작은지 확인합니다.

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

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

2. Bounds check

단순히 인덱스가 배열 크기보다 작은지 확인합니다. 예:

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

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

3. 실제로 필요한 것보다 한 요소 더 큰 경계의 인덱스

를 사용하여 배열을 초기화하여 "센티넬" 값을 제공합니다. 예:

array = [0] * (size + 1)

그런 다음 마지막 요소에 sentinel 값을 배치하고 요소에 액세스하기 전에 해당 인덱스를 확인합니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.