[C] [포인터] 배열 원소 값 뒤집기
Language/C, C++

[C] [포인터] 배열 원소 값 뒤집기

1. 예제 내용
#define COUNT 10
double arr[COUNT] = { 1.2, 3.1, 4.3, 4.5, 6.7, 2.3, 8.7, 9.5, 2.3, 5.8 };

  실수형 배열에 대해서 원소들을 역순으로 초기화하는 reverse_array 함수 생성, 크기가 10인 double 배열을 reverse_array 함수에 적용하여 출력

 

2. 출력 결과
Before : 1.2 3.1 4.3 4.5 6.7 2.3 8.7 9.5 2.3 5.8
After  : 5.8 2.3 9.5 8.7 2.3 6.7 4.5 4.3 3.1 1.2

 

3. 정답 코드
#include <stdio.h>

#define COUNT 10

double reverse_array(double* arr)
{
	int l = 0; // 배열 왼쪽 첫 원소의 위치 저장
	int r = COUNT - 1; // 배열 오른쪽 첫 원소의 위치 저장
	double temp;

	// 바꾸는 횟수는 배열 항목 개수의 절반만큼만 필요
	for (int i = 0; i < COUNT / 2; i++)
	{
		// swap
		temp = arr[l];
		arr[l] = arr[r];
		arr[r] = temp;

		l++; // left index는 1씩 증가
		r--; // right index는 1씩 감소
	}
	return *arr;
}

int main()
{
	double arr[COUNT] = { 1.2, 3.1, 4.3, 4.5, 6.7, 2.3, 8.7, 9.5, 2.3, 5.8 };

	printf("배열: ");
	for (int i = 0; i < COUNT; i++)
		printf("%.1lf ", arr[i]);

	printf("\n역순: ");
	reverse_array(arr); // 배열을 매개변수로 전달
	for (int i = 0; i < 10; i++)
		printf("%.1lf ", arr[i]);

	return 0;
}

참고 자료 : Core C Programming (천정아 저)