문제
다음 C언어 프로그램이 실행되었을 때, 실행 결과는?
① 7, 5 ② 8, 5 ③ 8, 9 ④ 7, 9
정답
3번
해설
정답: 3. p는 arr를 가리키는 행 포인터이다. 첫 번째 출력: *(p[0]+1)은 arr[0][1]=2, *(p[1]+2)는 arr[1][2]=6이므로 2+6=8이다. 두 번째 출력: ((p+1)+0)은 arr[1][0]=4, ((p+1)+1)은 arr[1][1]=5이므로 4+5=9이다. 따라서 출력은 8, 9이다.
오답 풀이
- 1번: 7, 5는 인덱스 계산이 맞지 않는다.
- 2번: 8, 5는 두 번째 합 계산이 틀렸다.
- 3번: 8과 9가 차례로 출력되어 정답이다.
- 4번: 7, 9는 첫 번째 합 계산이 틀렸다.
보충 개념 int (*p)[3]은 길이 3인 int 배열을 가리키는 포인터로, p[i]는 i번째 행을 가리키며 *(p[i]+j)는 arr[i][j]와 같다.