C 언어 기초

int m[3][4];
printf("%td\n", (char *)&m[2][1] - (char *)&m[0][0]);

int는 4바이트로 한다. 위의 코드를 실행했을 때의 출력으로 올바른 것은?

  1. A9
  2. B20
  3. 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 *로 변환한 뒤에 빼고 있으므로 차는 바이트 수로 나타납니다.

이 분야 연습하기 분야로 돌아가기

C 언어 기초의 다른 문제

  1. 문자열을 넣은 char 배열에 대해, 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  2. 위의 선언 다음에 ㄱ "p = t;", ㄴ "*p = 'x';", ㄷ "q = t;", ㄹ "*q = 'x';" 중 하나를 쓴다. 컴파일 오류가 되는 것의 조합은?
  3. 함수 포인터 배열을 사용한 위의 프로그램을 실행했을 때의 출력으로 올바른 것은?
  4. fill과 use는 따로 정의된 함수로 한다. 위의 함수의 문제점으로 올바른 것은?
  5. 위의 함수 make가 반환하는 포인터에 대해 올바른 것은?