2011-09-20 13 views
0

가능한 중복 : 나는 모든 기능에 대한 인수 목록이있을 것이라는 점을 알고있다
What is the signature of printf?printf() 함수의 인수 목록은 무엇입니까?

. 우리는 인수 목록에 언급 된 변수 헤아 렸어요보다 더 많은 인수를 전달하는 경우 는 내 질문

의 printf() 함수는 인수 목록을 가지고 있으며, 바로 그겁니다 우리는 'n'을 헤아 렸어요주고있는 error.but을 제공합니다 arguments printf() 함수가 실패하지 않는다.

무한한 인수 목록을 취하는 printf()의 인수 목록 섹션에서 사용되는 wht를 알고 싶습니까?

+0

Google "c 가변 개수 인수"를 확인하고 '' –

+2

-1 * 연구 노력 *을 확인하십시오. StackOverflow는 Google의 기계식 터크 대체품이 아닙니다. 당신이 당신의 질문 제목을 google하면, 당신은 대답을 얻는다. –

+0

당신은 단순히이 질문을 게시하기 전에 그것을 검색 할 수 있습니다! –

답변

4

의 printf의 서명은 다음과 같이 보인다. 함수 내에서 va_arg를 사용하여 해당 인수에 액세스합니다. 여기 cplusplus.com의 예입니다 : 여기 PrintFloats가 추가 인수의 수에 전달해야

/* va_start example */ 
#include <stdio.h> 
#include <stdarg.h> 

void PrintFloats (int amount, ...) 
{ 
    int i; 
    double val; 
    printf ("Floats passed: "); 
    va_list vl; 
    va_start(vl,amount); 
    for (i=0;i<amount;i++) 
    { 
    val=va_arg(vl,double); 
    printf ("\t%.2f",val); 
    } 
    va_end(vl); 
    printf ("\n"); 
} 

int main() 
{ 
    PrintFloats (3,3.14159,2.71828,1.41421); 
    return 0; 
} 

공지있다. printf는 형식 문자열의 태그를 세 어서 전달하는 인자의 수를 추측 할 수 있기 때문에이를 수행 할 필요가 없습니다.

-2

키워드는 가변 인자이며,

+1

이 작업을 완료 할 계획입니까, 아니면 설득력있게 질문에 대답하지 않아도됩니다. –

+1

그것은 완전하다, downvote에 자유롭게 느끼십시오. 나는 키워드 variadic 논쟁을위한 웹에있는 많은 설명이 있고 여기에서 반복 될 필요가없는다고 생각한다 - 이것은 나의 대답을 짧게 지킨 이유 다. – thiton

+0

-1 불완전한 답변을 게시하는 인수가 '웹에서 사용할 수있는 설명이 충분하다'면 대답을 귀찮게해서는 안됩니다. 답변을 게시하는 것이 더 정확하고 정확해야합니다. –

5

의 printf는 "가변"함수와 함께 ... 그들은 선언됩니다. 즉, 인수 목록은 끝에 ...으로 선언되며 printf 구현시 va_list, va_start, va_arg 등의 매크로가 가변 길이 목록에서 인수를 추출하는 데 사용됩니다. 함수는이 '...'마지막 인자로,이 인수를 무제한으로받을 수있다

int printf (const char * format, ...); 

경우

+0

(기술적으로 인수 목록은 무한하지 않으며 스택 크기에 따라 제한됩니다.) – Vicky

관련 문제