Search
Duplicate
🖨️

가변인자의 종료지점?

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
42seoul
Scrap
태그
가변인자
9 more properties

궁금했던것

우리가 printf를 입력하는 방식은 다음과 같다.
printf("%d %d", 1, 2)
C
복사
그렇다면 가변인자의 끝은 우리가 어떻게 알 수 있을까?
int ft_printf(const char *args, ...) { va_list ap; va_start(ap, args); while() va_arg(ap, int); }
C
복사
대충 위와 같은 형태라면 ap에 가변인자의 주소를 담아내고 va_arg(ap, int) 를 통해서 계속 다음 가변인자로 접근을 하다가 마지막에 NULL을 만나는 형태가 아닐까?그럼 NULL전까지만 가져오는 형식이면 되지 않을까??
결론은 아니었다.. 응 아니야~~~~!

그럼 가변인자의 수를 어떤식으로 판단할건데?

맨 처음의 예시처럼
printf("%d %d", 1, 2)
C
복사
우리는 type의 갯수로 가변인자가 얼마나 필요한지를 알 수 있게 된다.
따라서 type의 갯수를 체크를 하게 되면 가변인자가 얼마나 필요한지를 알게 되고, 얼마만큼만 가져오면 되는지를 확인할 수 있지 않을까???
제 생각이 틀렸다면 언제든지 코멘트를 달아주십시오 고수님들..ㅎㅎㅎ.ㅎ.ㅎ.ㅎ.ㅎ.ㅎ..ㅎ.ㅎ.ㅎ