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]);