매개 변수Parameters

인수는 함수 호출을 통해 함수에 전달되는 값의 이름입니다.Arguments are names of values passed to a function by a function call. 매개 변수는 함수가 수신할 수 있는 값입니다.Parameters are the values the function expects to receive. 함수 프로토타입에서 함수 이름 뒤의 괄호에는 함수의 전체 매개 변수 및 해당 형식 목록이 포함됩니다.In a function prototype, the parentheses following the function name contain a complete list of the function's parameters and their types. 매개 변수 선언은 형식, 크기 및 매개 변수에 저장된 값의 식별자를 지정합니다.Parameter declarations specify the types, sizes, and identifiers of values stored in the parameters.

구문Syntax

function-definition:function-definition:
declaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statementdeclaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statement

/* attribute-seq는 Microsoft 전용임 //* *attribute-seq is Microsoft Specific */

declarator :declarator :
pointer optdirect-declaratorpointer optdirect-declarator

direct-declarator:/* 함수 선언자 */direct-declarator:/* A function declarator */
direct-declarator ( parameter-type-list ) /* 새로운 스타일의 선언자 */direct-declarator ( parameter-type-list ) /* New-style declarator */

parameter-type-list: /* 매개 변수 목록 */parameter-type-list: /* A parameter list */
parameter-listparameter-list

parameter-list ,...parameter-list ,...

parameter-list:parameter-list:
parameter-declarationparameter-declaration

parameter-list , parameter-declarationparameter-list , parameter-declaration

parameter-declaration:parameter-declaration:
declaration-specifiers declaratordeclaration-specifiers declarator

declaration-specifiers abstract-declarator optdeclaration-specifiers abstract-declarator opt

parameter-type-list는 쉼표로 구분된 매개 변수 선언 시퀀스입니다.The parameter-type-list is a sequence of parameter declarations separated by commas. 매개 변수 목록에 있는 각 매개 변수 형식은 다음과 같습니다.The form of each parameter in a parameter list looks like this:

[register]  type-specifier [declarator]   

auto 특성을 사용하여 선언된 함수 매개 변수는 오류를 생성합니다.Function parameters declared with the auto attribute generate errors. 매개 변수 식별자는 함수 본문에 사용되어 함수에 전달된 값을 참조합니다.The identifiers of the parameters are used in the function body to refer to the values passed to the function. 프로토타입에서 매개 변수 이름을 지정할 수 있지만 선언 끝에서 이름이 범위를 벗어납니다.You can name the parameters in a prototype, but the names go out of scope at the end of the declaration. 따라서 함수 정의에서 같거나 다른 방식으로 매개 변수 이름을 지정할 수 있습니다.Therefore parameter names can be assigned the same way or differently in the function definition. 함수 본문의 가장 바깥쪽 블록에서 이 식별자를 다시 정의할 수 있지만 매개 변수 목록이 바깥쪽 블록인 것처럼 내부의 중첩 블록에서 다시 정의할 수 있습니다.These identifiers cannot be redefined in the outermost block of the function body, but they can be redefined in inner, nested blocks as though the parameter list were an enclosing block.

이 예제에 표시된 대로 parameter-type-list의 각 식별자는 적합한 형식 식별자 뒤에 와야 합니다.Each identifier in parameter-type-list must be preceded by its appropriate type specifier, as shown in this example:

void new( double x, double y, double z )  
{  
    /* Function body here */  
}  

매개 변수 목록에 매개 변수가 하나 이상 있을 경우 목록 끝에 쉼표 1개와 마침표 3개가 차례로 올 수 있습니다(, ...). "줄임표 표기법"이라고 하는 이 생성은 가변적인 개수의 인수가 함수에 사용됨을 나타냅니다.If at least one parameter occurs in the parameter list, the list can end with a comma followed by three periods (, ...). This construction, called the "ellipsis notation," indicates a variable number of arguments to the function. 자세한 내용은 가변적인 개수의 인수를 사용하여 호출을 참조하세요. 그러나 함수 호출에는 마지막 쉼표 앞에 있는 매개 변수만큼 인수가 있어야 합니다.(See Calls with a Variable Number of Arguments for more information.) However, a call to the function must have at least as many arguments as there are parameters before the last comma.

함수에 인수가 전달되지 않을 경우 void 키워드에 의해 매개 변수 목록이 바뀝니다.If no arguments are to be passed to the function, the list of parameters is replaced by the keyword void. 이때 void 사용은 형식 지정자로 사용하는 것과는 다릅니다.This use of void is distinct from its use as a type specifier.

줄임표 표기법 사용을 포함하여 매개 변수의 순서와 형식은 모든 함수 선언(있을 경우) 및 함수 정의에서 동일해야 합니다.The order and type of parameters, including any use of the ellipsis notation, must be the same in all the function declarations (if any) and in the function definition. 일반적인 산술 변환 후 인수 형식이 해당 매개 변수의 형식과 할당 호환이 되어야 합니다.The types of the arguments after usual arithmetic conversions must be assignment-compatible with the types of the corresponding parameters. 산술 변환에 대한 자세한 내용은 일반적인 산술 변환을 참조하세요. 줄임표 뒤의 인수는 확인되지 않습니다.(See Usual Arithmetic Conversions for information on arithmetic conversions.) Arguments following the ellipsis are not checked. 매개 변수는 기본, 구조체, 공용 구조체, 포인터 또는 배열 형식을 가질 수 있습니다.A parameter can have any fundamental, structure, union, pointer, or array type.

필요할 경우 컴파일러가 매개 변수 및 인수마다 독립적으로 일반적인 산술 변환을 수행합니다.The compiler performs the usual arithmetic conversions independently on each parameter and on each argument, if necessary. 변환 후 매개 변수는 int보다 짧아지지 않으며 매개 변수 형식이 명시적으로 프로토타입에 float로 지정되지 않을 경우 매개 변수가 float 형식을 가질 수 없습니다.After conversion, no parameter is shorter than an int, and no parameter has float type unless the parameter type is explicitly specified as float in the prototype. 예를 들어, 매개 변수를 char로 선언하면 int로 선언하는 것과 같은 효과를 가진다는 의미입니다.This means, for example, that declaring a parameter as a char has the same effect as declaring it as an int.

참고 항목See Also

C 함수 정의C Function Definitions