모두의 코드 커뮤니티

Printf()함수의 argument 갯수는 달라도 잘 동작하는 원리를 알고 싶습니다

함수 공부 할때 argument와 parameter의 자료형과 갯수가 같아야 한다고 알고 있는데

printf("%d %d %d", a, b, c); 이런 식으로 큰 따옴표는 공통으로 있어야 하지만
뒤에 a, b, c 등은 갯수가 계속 바뀌는데 어떻게 갯수가 달라도 잘 호출이 되나요?

<stdio.h>에서 원형 찾아보니 int printf(const char *format, …) 되어 있는데
‘…’ 는 argument를 여러개 받을 수 있다는 뜻으로 기타 등등의 의미로 적은 것인지
원래 C 문법에 있는 것인지 궁금합니다.

좋아요 1

안녕하세요. 좋은 질문이네요. 이를 가변 인자 (variadic argument) 라고 합니다. 제 강의에서는 다루지 않았지만 printf 처럼 인자의 개수가 다른 함수를 만들 때 쓰입니다.

위 링크에서 자세히 보실 수 있습니다.

네 답변 감사합니다. while문을 쓰는 원리였네요.
예제 코드에서 ‘…’ 갯수를 2개 혹은 4개로 고쳤더니 컴파일 안 되는데 마침표는 꼭 3개가 있어야 되나 봅니다. '…'에는 특별한 명칭이 있나요?

좋아요 1

특별한 명칭이 있는지는 잘 모르겠네요.

그리고 while 문을 쓴다기 보다는 va_start, va_list, va_arg 들이 가변 인자들을 처리해주는 매크로들 입니다.