조무위키
조무위키
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보
행위
문서
토론
편집
역사 보기
C언어
편집하기 (부분)
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
===가변인자=== printf 함수를 쓰다보면 요녀석 인자가 여러개 들어가는게 신통방통하네 한 경우가 있거나 나도 이런 함수 만들고 싶다 라고 생각하는 때가 있다. 도움이 될 것같아 이걸 먼저 쓰도록 한다. 이러한 가변인자를 사용하는 함수를 만들려면 ellpsis를 사용해야 한다 ... <- 요거 점3개가 ellpsis(생략 부호) 이다 그리고 stdarg 헤더파일을 포함해줘야 한다. 개귀차나서 간단히 쓰는법만 설명한다 <source lang="cpp"> #include <stdio.h> #include <stdarg.h> // stdarg 헤더파일을 포함해준다. void fun(int a, ...); // 여기서 ellpsis 즉 생략부호를 넣어준다. int main(int argc, char *argv[]){ fun(1, 10); // 인자는 여러개 fun(2, 10,20); // 넣어줘도 된다. 대신 맨 앞 인자는 뒷 인자들의 갯수를 적어줘야한다. return 0; } void fun(int a, ...){ va_list vl; // vl은 ...에 들어간 인자들에 접근하기 위해 만든 변수이다. int i = 0; va_start(vl, a); // va_start는 가변인자를 읽기 시작하는 동시에 몇개까지 읽을 것인가를 설정하는 함수라 보면된다. for (i = 0; i < a;i++) printf("[%d 번 인자] %d\n",i+1, va_arg(vl, int)); // va_arg에 vl과 int 를 넣어줬는데 눈치깠겠지만 int는 읽을 인자의 자료형이다 va_end(vl); // 끝낸다. } </source> 사실 더 설명을 써야하는데 너무 졸리니까 그만씀 ㄴ좆같은 C 쓰지말고 C++17로 갈아타라 <source lang="cpp"> #include <iostream> template<class...T> // 가변 인자 템플릿 void fun(T...arg) { (std::cout << arg, ...); // C++17 의 fold-expression } int main(int argc, char *argv[]){ fun(1, 2, 3, 4, 5, 6, 7, 8); fun(1, 2.3, "asdf"); // 다른 타입들도 가능 return 0; } </source> [[분류:프로그래밍 언어]]
요약:
조무위키에서의 모든 기여는 CC BY-SA 4.0 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
조무위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)