카테고리 없음

[C언어] Call By Reference(참조에 의한 호출)의 이해

s뽈록이s 2013. 3. 18. 17:04
void get_time(int *hr, int *min, int *sec)
{
	time_t the_time;
	struct tm *date;
 
	time(&the_time);
	date = localtime(&the_time);

	(*hr) = date->tm_hour;
	(*min) = date->tm_min;
	(*sec) = date->tm_sec;
}

void main()
{
	int hr, min, sec;

	get_time(&hr, &min, &sec);
	printf("현재 시간은 [%d:%d:%d]입니다.\n", hr, min, sec);
}

프로그램 실행화면


Call By Reference에 대해서 배우게 된다. 하지만 이걸 대체 언제 쓰냐? 하는 것은 잘 가르쳐주는 사람이 없는 것 같다. 각 문법은 사용할 때가 있는 법이다.


그래서 쓰이게 되는 경우를 한번 만들어 보았다. 요구사항 중에 내가 구현해야 하는 것 중에, 현재 시간을 알아내서 연산하는 과정이 있어야 한다고 치자.


그러면 연산하는 곳마다 현재 시간을 불러오는 것은 비효율적이다. 그래서 get_time()을 만들어 현재 시간을 가지고 오는 것이다. 여기서 문제가 있다.


함수가 return을 통해 반환할 수 있는 것은 하나이다. 하지만 여기서는 최소 3개 즉 시, 분, 초를 반환해 주어야 한다. 이럴 경우 Call By Reference를 사용하면 되는 것이다.