code

함수 정의에 대한 질문 (매개 변수의 점 세 개 ..)

codestyles 2020. 12. 31. 08:18
반응형

함수 정의에 대한 질문 (매개 변수의 점 세 개 ..)


함수 정의를 발견했습니다.

char* abc(char *f, ...)
{
}

세 개의 점은 무엇을 의미합니까?


줄임표는 뒤에 가변 개수의 인수가 있음을 의미합니다. 그것들을 사용하게 될 곳 (아마도 깨닫지 못한 채)은 printf기능 군입니다.

매개 변수가 미리 알려지지 않은 스타일의 함수를 만들 수 있으며 varargs 함수 ( va_start, va_argva_end)를 사용하여 특정 인수를 가져올 수 있습니다.

이 링크는 여기에 온 좋은의 논문이 printf변수 인수 목록을 사용.


C ++의 vararg 함수에 대한 Wikipedia .


이를 생략 부호라고하며 함수가 불확실한 수의 매개 변수를 취할 수 있음을 의미합니다. 함수는 다음과 같이 호출 될 수 있습니다.

abc( "foo", 0 );
abc( "foo", "bar", 0 );

목록의 끝을 나타내는 방법이 필요합니다. 첫 번째 매개 변수를 printf (0 형식 문자열)로 사용하거나 위의 예에서 특수 종결자인 0을 사용하여 수행 할 수 있습니다.

매개 변수에 대해 유형 검사 또는 사용자 정의 변환을 수행 할 수 없기 때문에 매개 변수 수가 가변적 인 함수는 C ++에서 잘못된 형식으로 간주됩니다.


이것은 C에서 varargs 함수 또는 가변 인수 함수라고합니다.

아마도 당신이 인식 할 수있는 것은 printf입니다.

참조 URL : https://stackoverflow.com/questions/599744/question-about-a-function-definition-three-dots-in-parameters

반응형