2014-12-19 4 views
0

사용자가 변수 value에 정수를 입력 할 수있게 해주는 프로그램을 작성하고 있으며 두 개의 대체 함수를 호출합니다. 각 함수는 선택한 정수 값을 3 배로 만듭니다. 함수 triple_by_value은 변수 number를 값으로 전달하고 매개 변수를 세배로하여 결과를 반환합니다.참조로 호출 및 값으로 호출

함수 triple_by_reference은 변수 수를 참조로 전달하고 참조 매개 변수를 통해 number의 원래 값을 3 배로 만듭니다.

#include <iostream> 
using namespace std; 

int main() 
{ 
    cout << "Enter a number (-1 to end): "; 
    cin >> value; 

    if (value != -1) 
    { 
     triple_by_value(value); 
     cout << "Triple-By-Value: " << value << endl; 
     triple_by_reference(value); 
     cout << "Triple-By-Reference: " << value << endl; 
    } 
    return 0; 
} 

int triple_by_value(int value) 
{ 
    value *= 3; 
    return value; 
} 

int triple_by_reference(int &value) 
{ 
    value *= 3; 
    return value; 
} 

는 내가이기 때문에 그냥 인쇄, 기능 triple_by_value이 잘 아닌 값을 배로하는 데 문제가있어 보인다.

도움을 주시면 감사하겠습니다.

+4

"함수 TripleByValue는 변수 숫자를 값으로 전달하고 매개 변수를 3 배로하여 결과를 반환합니다." 코드가 즉시 그 결과를 버립니다. –

+3

당신이 코드를 완벽하게 설명하는 것과 같아서 방금 내가 말한 것을 잊어 버린 것 같습니다 : p – keyser

+0

@keyser 가끔 xD가 발생합니다 – Leo

답변

3

이름에서 알 수 있듯이 변수를 값으로 전달하면 함수가 변수의 값만 가져오고 변수 자체는 액세스하지 못합니다.

예에서 int valuevalue의 전체 변수가 main이며 동일한 값을 가지고 있습니다. 그러나 int &valuevalue에 대한 참조는 main이며 mainvalue으로 생각하는 것이 안전하다는 의미입니다.

value을 다음에 triple_by_value에 인쇄하면 원하는 값을 얻을 수 있습니다. 의 main에 새 값을 지정하려면 의 mainvalue = triple_by_value(value);을 입력하거나 main에 새 값을 할당하거나 triple_by_reference을 사용하면됩니다.

+0

함수 내에서 새로운 변수를 생성한다는 사실을 알지 못했던 것 같습니다. 고마워요! – Leo

+0

나의 선생님은 가치에 의한 호출을 사용하여 값을 3 배 늘렸지만. 어떻게 그렇게? – Leo

+0

@ 레오나르도 Nammour 그것은 내 대답에 언급했다. – Nard