가변인자 함수에 대한 이해
printf함수와 scanf함수의 사용 방법을 생각해 보면
첫 번째 전달인자인 문자열에 존재하는 서식문자의 수만큼 전달인자의 수도 증가한다.
printf, scanf 함수는 전달인자의 수가 제한되어 있지 않다는 특징이 있다.
num = Sum(4, 1, 2, 3, 4); 1, 2, 3, 4의 합
Sum과 같은 형태의 호출이 가능한 함수를 가변인자 함수라 한다. 이 함수의 모든 헤더파일은 stdarg.h에 선언되어 있다.
가변인자 매개변수의 선언방법
전달된 인자들 추출해내는 방법
1단계 : 가변인자를 가리킬 수 있는 참조자를 선언한다.
2단계 : 참조자가 가변인자를 실제로 참조할 수 있도록 한다.
3단계 : 참조자를 통해 전달된 정보를 추출한다.
4단계 : 참조자가 더 이상 가변인자를 가리키지 않도록 해제한다.
1단계 : va_list
2단계 : va_start
3단계 : va_arg
4단계 : va_end
연결리스트 : 도서관리
제목 - char[31] | caTitle
가격 - unsigned int | uiPrice
저자 - char | caAuthor
분류 - char | caType
ListList.h에서는 Book구조체를 typedef형으로 선언 및 정의하고 있다.
LinkedList.c에서 Book_Stdin함수로 책 제목, 가격, 저자, 장르 등을 입력받고,
Book_Stdout으로 구조체 Book의 주소를 가지는 std가 가리키는 각각의 제목, 가격, 저자, 장르를
출력해낸다.
main.c에서 Book의 주소를 가지는 head에 Book 크기의 동적할당을 받고
Book_Stdin함수를 호출하여 인자로 head를 넘기고, Book_Stdout도 같이 호출하여 전과 동일하게 head를 인자로 넘겨준다.
'c언어' 카테고리의 다른 글
20140508 - 북 연결리스트(Book_DBopen, Book_DBclose, Book_FileIn, Book_FileOut, Book_DBsave) 수정중 (0) | 2014.05.08 |
---|---|
20140507 - 북 연결리스트(Book_Alldel, Book_Insert, Book_Print) 수정중 (0) | 2014.05.08 |
20140430 - 매크로 함수의 단점, 파일 분할 컴파일 (0) | 2014.04.30 |
20140429 - 텍스트 데이터와 바이너리 데이터를 동시에 입출력 (0) | 2014.04.29 |
20140428 - 인자값을 이용해 파일복사, 바이너리 데이터의 입출력, 문제풀기 (0) | 2014.04.28 |