file1.c에서다음 코드로 인해 가비지 또는 액세스 위반 오류가 발생하는 이유는 무엇입니까?
int a[3]={1,39,7}; /* definition */
와 file2.c
extern int a[]; /* declaration */
b = a[2]; /* correct usage in file2.c */
파일 2의 사용은 제 3 요소를 취득
extern int *a; /* another declaration */
c = a[1]; /* a[1] is *(a+1), fails! */
file3.c (7)의, 그러나 사용 file2에서 39를 주소로 해석합니다 (32 비트 정수 및 주소로 가정). 이로 인해 가비지 또는 액세스가 발생합니다. iolation 오류가 왜 그렇게 ...?
@ user692209 서식을 지정하지 않고 텍스트 블록을 붙이기보다는 [코드 형식에 대한 FAQ] (http://meta.stackexchange.com/q/22186)를 읽으십시오. – razlebe