SQLD프로그래밍 언어 활용C 포인터와 배열난이도 4MCQ

SQLD C 포인터와 배열 기출문제 #4084

문제

아래 C 코드를 참고하여 값이 나머지 셋과 다른 것을 고르시오.

C
int ar[2][2] = {{11, 22}, {33, 44}}; int *p = &ar[0][0];

<보기 표현식>

  1. ar[0][1]
  2. p[1]
  3. *(p + 1)
  4. **(ar + 1)

① ar[0][1] ② p[1] ③ *(p + 1) ④ **(ar + 1)

정답

4

해설

정답: 4. ar[0][1], p[1], *(p+1)은 모두 배열의 두 번째 원소인 22를 의미한다. 반면 **(ar+1)은 두 번째 행의 첫 번째 원소인 ar[1][0], 즉 33을 의미한다.

오답 풀이

  • 1번: ar[0][1]은 22이다.
  • 2번: p&ar[0][0]을 가리키므로 p[1]은 22이다.
  • 3번: *(p+1)p[1]과 같으므로 22이다.
  • 4번: ar+1은 두 번째 행을 가리키고, 이를 역참조하면 두 번째 행의 시작 원소 33을 얻는다.

보충 개념 2차원 배열에서 ar은 행 단위 포인터처럼 동작한다. ar+1은 다음 행을 가리키며, **(ar+1)은 두 번째 행의 첫 번째 값을 의미한다.

SQLD 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] C 포인터와 배열 프로그래밍 언어 활용 기출 #4084 | 문어CBT