C 언어 기초
int m[3][4];
printf("%td\n", (char *)&m[2][1] - (char *)&m[0][0]);int는 4바이트로 한다. 위의 코드를 실행했을 때의 출력으로 올바른 것은?
- A9
- B20
- C36
정답과 해설 보기
정답: C. 36
C 언어의 2차원 배열은 행 우선으로 나열되며, m[3][4]는 m[0][0]~m[0][3], m[1][0]~m[1][3], m[2][0]~m[2][3]의 순서로 놓입니다. m[2][1] 앞에는 2행분의 2 × 4 = 8개와 같은 행의 1개를 합친 9개의 요소가 있습니다. 1요소는 4바이트이므로 첫 요소로부터의 거리는 9 × 4 = 36바이트입니다. char *로 변환한 뒤에 빼고 있으므로 차는 바이트 수로 나타납니다.