void execute(int &x,int y=100)
{
x=x+y;
cout<<x<<endl;
}
void main()
{
int a=5,b=6;
execute(b);
}
x (함수 프로토 타입의 형식 매개 변수)에 기본값을 지정하지 않아도 다음 프로그램이 작동합니다.함수 개념
void execute(int &x,int y=100)
{
x=x+y;
cout<<x<<endl;
}
void main()
{
int a=5,b=6;
execute(b);
}
x (함수 프로토 타입의 형식 매개 변수)에 기본값을 지정하지 않아도 다음 프로그램이 작동합니다.함수 개념
예, 작동합니다. x
에 기본값을 할당하지 않으면 호출자가 값을 매개 변수로 전달하게됩니다. 당신이 execute(b)
을 메인에두면 참조 번호 x
을 실제 매개 변수 'b'로 바인딩하고 변수 'y'에 아무 값도 전달하지 않았기 때문에 기본값이 사용됩니다.
첫째, C++에는 "함수 프로토 타입"같은 것이 없습니다. "Prototype"은 C++에서 의미있는 응용 프로그램이없는 C 구문의 용어입니다. 여기에있는 함수 선언은 함수 정의입니다.
둘째, C++의 모든 함수 인수에 기본 인수를 지정해야하는지 묻는 것입니다. 맞습니까? 그렇다면 대답은 '아니오'입니다. 모든 함수 인수에 대해 기본 인수를 지정할 필요가 없습니다.
셋째로, int main
이 아닌 void main
이라고 가정합니다.
C++ 표준 (§ 3.3.3)은 "함수 프로토 타입 범위"를 정의합니다. 범위는 "가장 가까운 함수 선언자의 끝에서 종료됩니다." 나는 그것을 "의미있는 적용"이라고 부를 것입니다. 저기 저기에 다른 참조가 있습니다. –
나는 기능이 어떻게 작동하는지 혼란 스럽다고 생각합니다. x에 대한 값을 전달합니다 (실제 값이 아닌 int
에 대한 참조). 그렇습니다. 작동합니다.
y (int y=100
)의 기본값을 제공하면 두 번째 인수를 전달하지 않고도 함수를 호출 할 수 있습니다. 하나의 인자로 불리는 경우, Y의 값은 100
int a=5,b=6;
execute(b);
일단 내부, x의 초기 값은 6이다) (실행 Y는 의미 넌 execute(b)
실행할 100
인 execute
은 b = b + 100
(y
은 전달하지 않았기 때문에 100이며 기본값을가집니다.), 106을 출력하고 b
은 main
으로 수정됩니다. 참고로 작성 되었기 때문에 main
으로 수정됩니다.
나는 귀하의 예가 게시 과정에서 잘리는 것 같아요. – Jay