티스토리 뷰

Language/C

[C언어] 가변인자

Mr.SIM 2013. 10. 2. 11:13

함수를 사용할때, 가변인자는 고정된 값이 아닌, 변수의 양이 몇개 올지 모를 때 사용한다.

다음과 같은 코드가 있다.

void sum(int args, ...){
	int i=0;
	int total = 0;
	 
	va_list ap;
	_crt_va_start(ap, args);
	for(i=0; i<args; i++){
		total += _crt_va_arg(ap, int);
	}
	 
	printf("%d\n", total);

	_crt_va_end(ap);
}

int  main(){
	sum(3, 1,2,3);
	
	return 0;
} 



main()함수에서는 크기와 값들을 보내게 된다. sum()함수는 va_list ap 를 사용해서 가변인자값을 저장하고, va_start를 활용해서 시작을 알린다. va_arg로 값을 받고, va_end로 끝을 알리게 된다.

이때, va_start와 va_arg, va_end는 함수처럼 보이지만, 실제로는 컴파일 전에 생성되는 매크로이다.


가변인자의 활용말고도 배열을 사용하면 같은 결과를 가져올 수 있다. 배열을 이용하게 되면, 배열 값을 함수에 통째로 넘기게 되고, 그 값을 바로 활용할 수 있다. 

'Language > C' 카테고리의 다른 글

[C언어] 매크로  (0) 2013.10.02
[C언어] #include < >와 #include " "  (0) 2013.10.02
[C언어] 함수 포인터 배열  (0) 2013.10.02
[C언어] 함수 포인터  (0) 2013.10.02
[C언어] 포인터와 const  (0) 2013.10.01
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday