함수 호출
A 함수를 호출 고 폼 컨트롤 및 인수 (있는 경우)를 함수에 전달 하는 식입니다.
식 (식 목록선택)
위치 식 함수 이름 또는 함수의 주소를 산출 하 고 식 목록 (쉼표로 구분) 식의 목록입니다.두 번째 표현식의 값을 함수에 전달 된 인수입니다.이 함수는 값을 반환 하지 않으면 반환 하는 함수로 선언 void.
선언 함수 호출 하기 전에 있지만 플레이 매개 변수 정보가 없습니다 제공 됩니다 경우 선언 되지 않은 인수는 단순히 일반적인 산술 변환이 거쳐야.
[!참고]
값에서 다른 인수 측면 효과 의해 변경 될 수 있습니다 인수 값 않은 있도록 함수 인수 목록의 식에에서 임의의 순서로 평가할 수 있습니다.함수 호출 연산자가 정의 된 시퀀스 위치 에서만 호출된 되는 함수에 제어를 전달 하기 전에 모든 부작용 인수 목록에서 계산 되는 보장 합니다.(참고 인수가 스택에 푸시되는 순서는 별개의 문제입니다.) 참조 하십시오 시퀀스 위치 에 대 한 자세한 내용은.
유일한 요구 사항은 모든 함수 호출에 괄호 앞 식은 함수 주소를 계산 되어야 것입니다.따라서 식을 함수 포인터를 통해 함수를 호출할 수 있습니다.
예제
호출 되는 함수 호출을 보여 주는이 예제는 switch 문을:
int main()
{
/* Function prototypes */
long lift( int ), step( int ), drop( int );
void work( int number, long (*function)(int i) );
int select, count;
.
.
.
select = 1;
switch( select )
{
case 1: work( count, lift );
break;
case 2: work( count, step );
break;
case 3: work( count, drop );
/* Fall through to next case */
default:
break;
}
}
/* Function definition */
void work( int number, long (*function)(int i) )
{
int i;
long j;
for ( i = j = 0; i < number; i++ )
j += ( *function )( i );
}
이 예제에서는 함수에서 호출 합니다. main,
work( count, lift );
정수 변수 전달 count, 함수 주소 lift 함수에 work.포인터 계산 함수 식별자 이후 함수 식별자를 간단 하 게 제공 하 여 함수의 주소를 전달 하는 메모입니다.함수 식별자를 이런이 식으로 사용 하려면 함수 선언 또는 정의 된 식별자를 사용 하기 전에; 그렇지 않으면 식별자를 인식할 수 없습니다.이 경우에 프로토타입에서 work 시작 부분에 지정 되는 main 함수.
매개 변수 function 에서 work 하나 만들어 함수에 대 한 포인터 선언 int 인수 및 반환에 긴 값입니다.매개 변수 이름 다음에 괄호는 필수입니다. 없으면 선언에 대 한 포인터를 반환 하는 함수를 지정 하는 긴 값입니다.
함수 work 내에서 선택한 함수를 호출 하는 에 대 한 다음 함수 호출을 사용 하 여 루프.
( *function )( i );
하나의 인수를 i, 호출된 되는 함수에 전달 됩니다.