2010-04-20 4 views
3
void execute(int &x,int y=100) 
{ 
x=x+y; 
cout<<x<<endl; 
} 
void main() 
{ 
int a=5,b=6; 
execute(b); 
} 

x (함수 프로토 타입의 형식 매개 변수)에 기본값을 지정하지 않아도 다음 프로그램이 작동합니다.함수 개념

+0

나는 귀하의 예가 게시 과정에서 잘리는 것 같아요. – Jay

답변

4

예, 작동합니다. x에 기본값을 할당하지 않으면 호출자가 값을 매개 변수로 전달하게됩니다. 당신이 execute(b)을 메인에두면 참조 번호 x을 실제 매개 변수 'b'로 바인딩하고 변수 'y'에 아무 값도 전달하지 않았기 때문에 기본값이 사용됩니다.

3

첫째, C++에는 "함수 프로토 타입"같은 것이 없습니다. "Prototype"은 C++에서 의미있는 응용 프로그램이없는 C 구문의 용어입니다. 여기에있는 함수 선언은 함수 정의입니다.

둘째, C++의 모든 함수 인수에 기본 인수를 지정해야하는지 묻는 것입니다. 맞습니까? 그렇다면 대답은 '아니오'입니다. 모든 함수 인수에 대해 기본 인수를 지정할 필요가 없습니다.

셋째로, int main이 아닌 void main이라고 가정합니다.

+0

C++ 표준 (§ 3.3.3)은 "함수 프로토 타입 범위"를 정의합니다. 범위는 "가장 가까운 함수 선언자의 끝에서 종료됩니다." 나는 그것을 "의미있는 적용"이라고 부를 것입니다. 저기 저기에 다른 참조가 있습니다. –

0

나는 기능이 어떻게 작동하는지 혼란 스럽다고 생각합니다. x에 대한 값을 전달합니다 (실제 값이 아닌 int에 대한 참조). 그렇습니다. 작동합니다.

y (int y=100)의 기본값을 제공하면 두 번째 인수를 전달하지 않고도 함수를 호출 할 수 있습니다. 하나의 인자로 불리는 경우, Y의 값은 100

할당한다
int a=5,b=6; 
execute(b); 

일단 내부, x의 초기 값은 6이다) (실행 Y는 의미 넌 execute(b) 실행할 100

1

executeb = b + 100 (y은 전달하지 않았기 때문에 100이며 기본값을가집니다.), 106을 출력하고 bmain으로 수정됩니다. 참고로 작성 되었기 때문에 main으로 수정됩니다.