1. 가변 인자함수
함수의 전닮값(파라미터)(인수) 의 개수가 정해져 있지 않은 함수다.
ex) printf, scanf
2. 가변 인수
인수의 개수와 타입이 정해져 있지 않은 인수
3. 가변인수함수 : 가벼인수(...)를 이용한 함수
} |
가. va_list : 전달된 인수들은 스택에 저장되고 함수는 스택에서 인수를 꺼내 쓴다.
va_list타입은 char*형으로 정의됭져 있고 가변이수를 읽기 위한 포인터 변수이다.
나. va_start(plter, 마지막 고정 인수), plter포인터변수가 첫번째 가변인수를 가리키도록 초기화 한다.
마지막 고정인수의 번지에 길이를 더해서 가변인수가 시작되는 번지를 계산한다.
다. va_arg(plter, 인수타입) 가변인수를 실제로 읽는 명령어, plter 위치에서 인수타입에 맞는 값을 읽어 리턴하여 plter를 다음 가변 가변인수 위치로 옮겨준다. va_arg는 매크로 함수이기 때문에 타임명이 내부적으로 sizeof연산자와 캐스트 연산자로 전달되어 인수로 받을 수 이싿.
라. va_end(plter) 가변인수로 다 읽은후 뒷정리하는데 별다른 동작은 하지 않는다.
'컴퓨터 > C' 카테고리의 다른 글
[Linux] GCC 사용 예제 (0) | 2013.08.09 |
---|---|
[C언어] #if #endif 조건부 컴파일 (0) | 2013.02.20 |
[C언어] scanf 기본 서식문자 조합 (0) | 2013.02.16 |
[C언어] Printf 의 %lf, %f와 Scanf의 %lf, %f의 차이 (2) | 2013.02.16 |
C언어에서 #include<>와 #include"" 지시어의 차이점 (0) | 2012.05.29 |