여기서 len은 A [10]이고 i은 A [11]에있다. 이러한 오류를 잡을 수있는 방법이 있습니까 ?? gcc -Wall -W를 사용하여 컴파일을 시도했지만 경고가 표시되지 않았습니다.배열 색인을 사용하여 다른 변수에 액세스 할 수있는 이유는 무엇입니까?
int main()
{
int A[10];
int i, len;
len = sizeof(A)/sizeof(0[A]);
printf("Len = %d\n",len);
for(i = 0; i < len; ++i){
A[i] = i*19%7;
}
A[i] = 5;
A[i + 1] = 6;
printf("Len = %d i = %d\n",len,i);
return 0;
}
출력 : 렌 = 10 렌 I = 5 = 6
정의되지 않은 동작이라고하며 배열의 경계를 벗어날 때 얻을 수 있습니다. 이것은 어떤 일이 발생할 수 있으며 귀하의 프로그램이 더 이상 보증되지 않음을 의미합니다. – GManNickG
우와, 왜 sizeof (0 [A])를 사용하고 있습니까? 다른 사람들이 귀하의 코드를 이해할 때 정말로 좋아하지 않는 한 sizeof (A [0]) 여야합니다. – nmichaels
여기서 모든 대답은'sizeof (0 [A])'를 설명하는 방법을 알아야한다는 조건이 있어야합니다. 야생 추측 :이 숙제입니까? –