본문 바로가기

정글캠프-WIL/C언어

[C언어] - va_list 자료형


미리 보면 좋은 내용


va_list 자료형이란?
C언어에서 "가변 인자 함수(인자 개수가 정해져 있지 않은 함수)"를 다루기 위한 자료형

Why Used?

보통 함수는 인자 개수가 고정되어 있지만 인자 개수가 계속 바뀔 때 사용하기 위한 가변 인자 함수
int add(int a, int b); // 인자 개수 2개 고정

printf("a=%d b=%d", a, b); // 인자 개수 3개
printf("a=%d b=%d c=%d", a, b, c); // 인자 개수 4개

핵심 개념

va_list = 가변 인자들을 순회하기 위한 "포인터/상태 객체"
즉, 스택에 쌓인 인자들을 하나씩 꺼내기 위한 도구
스택(또는 레지스터)에 있는 인자들을 순차적으로 읽는 구조

헤더 파일

#include <stdarg.h>

사용 예시

void func(int count, ...) {
    va_list ap;              // 1. 가변 인자 리스트 선언
    va_start(ap, count);     // 2. 시작 (마지막 고정 인자 전달)

    for (int i = 0; i < count; i++) {
    	/**
          * 만약 va_arg(ap, double)로 사용 -> 실체는 int
          * UB(undefined Behavior 에러 발생)
          */
        int value = va_arg(ap, int);   // 3. 하나씩 꺼냄 (반드시 타입 정보 필수)
        printf("%d\n", value);
    }

    va_end(ap);              // 4. 종료
}

 

 

 

'정글캠프-WIL > C언어' 카테고리의 다른 글

[C언어] - 운영체제 ptov() 함수  (0) 2026.04.26
[C 언어] - memset() 함수  (0) 2026.04.25
[C언어] - connect() 함수  (0) 2026.04.23
[C언어] - accept() 함수  (0) 2026.04.23
[C언어] - listen() 함수  (0) 2026.04.23