전산 관련 시험/프로그래밍(C, JAVA, Python)
[C] 프로그래밍 언어 (ex. 19)
응_비
2024. 10. 16. 16:36
int a[3][3] = { 10, 20, 30, 40, 50, 60, 70, 80, 90 };
int (*p)[3];
p = a;
printf("%d", *(p[2] + 1) - *(p[0] + 3));
코드 분석:
int a[3][3] = { 10, 20, 30, 40, 50, 60, 70, 80, 90 };
int (*p)[3];
p = a;
printf("%d", *(p[2] + 1) - *(p[0] + 3));
• **배열 a[3][3]**는 2차원 배열로 다음과 같은 값들을 가집니다:
10 20 30
40 50 60
70 80 90
• **포인터 p**는 3개의 정수로 이루어진 배열을 가리키는 포인터로 선언되었으며, 배열 a의 시작 주소를 가리키도록 설정됩니다.
• printf의 식:
• *(p[2] + 1)는 배열 a의 2번째 행, 1번째 열에 있는 값을 의미하며, 그 값은 80입니다.
• *(p[0] + 3)은 포인터 연산으로 첫 번째 행의 시작 주소에서 3칸 이동한 위치에 있는 값이며, 그 값은 40입니다.
따라서 최종 계산은 다음과 같습니다:
80 - 40 = 40
출력 결과:
프로그램의 출력은 40입니다.