미션 35: 배열을 포인터로 접근하기 ➍
길이가 6인 int형 배열 a를 선언하고 1, 2, 3, 4, 5, 6으로 초기화하세요. 그런 다음 이 배열을 저장된 값을 거꾸로, 즉 6, 5, 4, 3, 2, 1이 되도록 변경하세요. 단, 배열 앞과 뒤를 가리키는 포인터 변수 두 개를 활용하여 저장된 값의 순서를 변경하는 방식을 이용하세요.
pointer2_11.c
#include <stdio.h> main() { int a[6] = { 1, 2, 3, 4, 5, 6 }; int *front = &a[0]; // 배열의 첫 번째 요소의 주소 값을 저장 int *back = &a[5]; // 배열의 마지막 요소의 주소 값을 저장 int i, temp; printf("배열 a 현재 내용\n"); for (i = 0; i < 6; i++) printf("%d ", a[i]); printf("\n"); for (i = 0; i < 3; i++) { temp = *front; // front가 가리키는 값을 temp에 저장 *front = *back; // back이 가리키는 값을 front가 가리키는 메모리에 저장 *back = temp; // temp의 값을 back이 가리키는 주소에 저장 front += 1; // 포인터 연산을 통해 front가 가리키는 주소 값에 1 증가 back -= 1; // 포인터 연산을 통해 back이 가리키는 주소 값에 1 감소 } printf("배열 a 변경 후 내용\n"); for (i = 0; i < 6; i++) printf("%d ", a[i]); printf("\n"); }
실행 결과
배열 a 현재 내용
1 2 3 4 5 6
배열 a 변경 후 내용
6 5 4 3 2 1