필기 문제인데.. 사실 전 이거를 맞혔었거든요
다시 보는 중에 이해가 잘 안가서요!
두번째 printf 출력값으로 14가 나올 수 없는 이유가 뭘까요?ㅠ 14가 나오려면 a[0]으로 설정해야돼서 그런건가요?
저기서 a가 값으로 나오려면 *a 라고 써야만 14로 나오는 건가요?
안녕하세요 길벗수험서 운영팀입니다.
먼저 a[2]의 값과 *a가 어떤 값을 가리키는지 파악하세요.
a[2]는 3번째 값인 30을
*a의 배열명 a의 배열의 첫번째 값의 주소를 가리키므로 1번째 값인 14를 가리키게 됩니다.
문제에서 a[0]의 주소값을 10이라고 하였고, int를 4Byte로 가정하였으므로,
a[2]는 3번째 값으로 a[0]인 첫번째 값에서 2번 이동해야 하므로 2*4Byte인 8만큼 주소가 이동하게 되어 18이 주소가 됩니다.
두 번째 출력은 a는 &a[0]과 같고, *a는 a[0]과 같다는 점으로 봤을 때 a[0]의 주소값인 10이 그대로 출력되게 되어,
결과는 18, 10이 됩니다.
행복한 하루되세요 :)
-
관리자2022-07-19 21:06:23
안녕하세요 길벗수험서 운영팀입니다.
먼저 a[2]의 값과 *a가 어떤 값을 가리키는지 파악하세요.
a[2]는 3번째 값인 30을
*a의 배열명 a의 배열의 첫번째 값의 주소를 가리키므로 1번째 값인 14를 가리키게 됩니다.
문제에서 a[0]의 주소값을 10이라고 하였고, int를 4Byte로 가정하였으므로,
a[2]는 3번째 값으로 a[0]인 첫번째 값에서 2번 이동해야 하므로 2*4Byte인 8만큼 주소가 이동하게 되어 18이 주소가 됩니다.
두 번째 출력은 a는 &a[0]과 같고, *a는 a[0]과 같다는 점으로 봤을 때 a[0]의 주소값인 10이 그대로 출력되게 되어,
결과는 18, 10이 됩니다.
행복한 하루되세요 :)