'가변인자'에 해당되는 글 1건

  1. 2009.05.13 가변인자
[ Programming ]2009. 5. 13. 13:59
// test.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//

#include "stdafx.h"
#include< stdarg.h >

/*
	가변 인자.
	가변인자란, 인자의 개수가 늘었다 줄었다 할수 있는 함수이다.
	가장 잘 알고 있는 예로는 printf() 함수이다.

	1. 함수의 원형 정의
	int func(int, ...);
	첫번째 인자 int는 고정이고, 다음 인자 ...이 가변인자이다.

	2. 함수의 본체 작성.
	int func(int count, ...)
	{
	}

	3. 헤더파일 포함.
	#include < stdarg.h >

	가변 인자를 위한 매크로.

	void va_start(va_list list, last);
	- list를 초기화 한다.
	- 포인터를 맨 처음으로 톨리는 의미.
	- 만약 이 함수가 없다면 va_arg()를 이용하여 인자들을 다 사용했을 때 
	  처음으로 되돌릴 방법이 없게 된다.

	type va_arg(va_list list, type);
	- 고정 인자를 제외한 나머지 인자들을 얻기 위하여 사용된다.

	void va_end(va_list list);
	- 가변인자의 사용을 끝낼 때 사용한다. 보통 사용하지 않는다.

	- 주의 사항.
	1. va_start()를 사용하려면 적어도 하나 이상의 고정 인자가 있어야 한다.
	add(...);	/// 에러 발생.
*/

/// 가변인자를 이용한 더하는 함수.
int add(const int count, ...);

int _tmain(int argc, _TCHAR* argv[])
{
	int sum = add(5, 1, 2, 3, 4, 5);

	std::cout << sum << std::endl;

	return 0;
}

int add(const int count, ...)
{
	va_list list;
	int sum = 0;
	int i;

	va_start(list, count);
	for(i = 0; i < count; ++i)
	{
		sum += va_arg(list, int);
	}
	va_end(list);
	return sum;
}
머리로만 알고 있는것 같아서 한번 다시 책을 봤다.. 
이제 좀 외어도 될것 같은데... 머리에 안들어오네;
Posted by 냉동