다음 C언어 프로그램이 실행되었을 때의 결과는?
#include <stdio.h>
int main(void) {
int a[5] = {4, 0, 0, 0, 0};
int *pt = a;
printf("%td", (pt + *pt) - pt + *pt);
return 0;
}정답 3번
pt는 배열 a의 첫 원소를 가리키고 *pt는 4다. 따라서 pt + *pt는 같은 배열의 a[4]를 가리킨다. (pt + *pt) - pt는 바이트 수가 아니라 배열 원소 간 거리인 4이고, 여기에 *pt의 값 4를 더하므로 8을 출력한다. 포인터 차의 자료형은 ptrdiff_t이므로 printf의 %td로 출력한다. 이 연산은 같은 배열 안의 포인터를 사용하기 때문에 유효하다. 단일 정수의 주소에 임의로 4를 더해도 되는 것으로 일반화하면 안 된다.
콘텐츠 정보
- 자료 유형
- 편집복원
- 검수 상태
- 원자료 대조 완료
- 해설 작성·검수
- 정처LAB 편집 기준
- 최종 검수
- 2026-09-26