반응형
함수 정의에 대한 질문 (매개 변수의 점 세 개 ..)
함수 정의를 발견했습니다.
char* abc(char *f, ...)
{
}
세 개의 점은 무엇을 의미합니까?
줄임표는 뒤에 가변 개수의 인수가 있음을 의미합니다. 그것들을 사용하게 될 곳 (아마도 깨닫지 못한 채)은 printf
기능 군입니다.
매개 변수가 미리 알려지지 않은 스타일의 함수를 만들 수 있으며 varargs 함수 ( va_start
, va_arg
및 va_end
)를 사용하여 특정 인수를 가져올 수 있습니다.
이 링크는 여기에 온 좋은의 논문이 printf
변수 인수 목록을 사용.
C ++의 vararg 함수에 대한 Wikipedia .
이를 생략 부호라고하며 함수가 불확실한 수의 매개 변수를 취할 수 있음을 의미합니다. 함수는 다음과 같이 호출 될 수 있습니다.
abc( "foo", 0 );
abc( "foo", "bar", 0 );
목록의 끝을 나타내는 방법이 필요합니다. 첫 번째 매개 변수를 printf (0 형식 문자열)로 사용하거나 위의 예에서 특수 종결자인 0을 사용하여 수행 할 수 있습니다.
매개 변수에 대해 유형 검사 또는 사용자 정의 변환을 수행 할 수 없기 때문에 매개 변수 수가 가변적 인 함수는 C ++에서 잘못된 형식으로 간주됩니다.
이것은 C에서 varargs 함수 또는 가변 인수 함수라고합니다.
아마도 당신이 인식 할 수있는 것은 printf입니다.
반응형
'code' 카테고리의 다른 글
상위 분기에서 현재 분기 업데이트 (0) | 2020.12.31 |
---|---|
C # 7 튜플과 람다 (0) | 2020.12.31 |
str.translate를 유니 코드 문자열과 함께 사용하려면 어떻게해야합니까? (0) | 2020.12.31 |
컬렉션에 속성 설정-백본 JS (0) | 2020.12.31 |
PHP에 사전이 있습니까? (0) | 2020.12.31 |