저는 C 2 차원 배열을 채우는 코드에서 제 방식의 오류를 깨달았습니다. 왜이 두 개의 다차원 배열이 유효한 구문처럼 보이지만 예상 한 결과 만 제공하는지 설명하십시오.
은이 같은 어레이 선언 : 실수로 값으로 설정 ..하지만int myArray[5][5];
: 그것은 했어야 있을때 야
*myArray[3,4] = 10;
:
myArray[3][4] = 10;
확인 첫 번째 줄은 실수이지만 매우 이상한 결과에도 불구하고 컴파일되고 실행되었습니다. (즉, 나는에 *에서 myArray [3,4], 그것은 있던 잘못된 값의 내용을 인쇄하려고 할 때)
사람이 바로 첫 번째 할당 문은 이을 무엇을하고 있는지 설명 할 수 있습니까?
편집 : 나는 원래 사용하려 : 나를 *의 INT 타입으로 int를 할당하는 시도에 대해 컴파일러 오류가 발생했습니다 요식
myArray[3,4] = 10;
. 나는 아래의 해답에 따라 3,4에서 4로 평가하고 포인터에 4를 추가하려고 시도 했으므로 포인터에 주소를 지정하여 배열에 액세스해야한다고 생각했습니다. (a는 b) B이다 :
이것은'myArray [4] [0]'에 할당하는 효과가 있습니다. –
아니요 * myArray [4] address 10을 할당하는 효과가 없습니다. 아래 회신을 참조하십시오. – Lundin
아니요, Daniel이 맞습니다. * myArray [4]는 int이며 int *가 아닙니다. – Jander