2012-11-20 1 views
0

안녕하세요, 저는 C++과 관련된 몇 가지 사항을 더 잘 이해할 수 있기를 희망했습니다. 우리는 기능에 대해 배우고 있으며 수업을 놓쳤습니다. 나는 혼란 스럽기 때문에 그것이 놓친 수업에 잘못이라고 생각하고 있습니다. 나는 명확하고 간결한 방향과 용어에 대한 이해와 관련하여 두 가지 문제가 있습니다. 이것은 내 첫 번째 것입니다 :함수 결과를 "출력 매개 변수"로 반환한다는 것은 무엇을 의미합니까?

a) 전달 된 두 정수 값의 곱을 계산하는 "product"라는 C++ 함수를 작성하십시오. 이 함수는 두 개의 입력 인수를 취하여 계산 된 응답을 함수의 출력 매개 변수로 반환합니다. b)이 함수를 호출 (호출)하는 데 사용할 수있는 한 줄의 코드를 작성하십시오.

이것은 두 번째 것입니다. a) 전달 된 두 정수 값의 곱을 계산하는 "product"라는 C++ 함수를 작성하십시오. 이 함수는 두 개의 입력 인수를 취하여 함수 실행 결과로 제품 응답을 반환합니다. b)이 함수를 호출 (호출)하는 데 사용할 수있는 한 줄의 코드를 작성하십시오.

그래서 내 생각은 두 번째가이 같은 일을 의미하는 것입니다 :

int product(int a, int b) 
{ return a*b; } 

및 부품 < < 제품의 "두 숫자의 제품은"< < cout을 로 B (A, 비);

먼저 답을 출력 매개 변수로 사용하면 무엇을 의미합니까? 그리고 내가있는 동안 나에게 불쌍히 여기는 것이 int 대신 void를 사용해야한다고 말하면서 누군가가 참조로 돌아 오는 것이 정확히 무엇인지 더 잘 설명 할 수 있습니까? 그것에 대해 전체적인 측면은 매개 변수의 끝에 &이 있어야하고 "기술적으로"그것은 단지 그것을 반환하기보다는 그것을 변경할 수있게하지만 좀 더 깊이있는 것을 기대하고 있었습니까? 그렇게 가난하게해서 유감스럽게 생각하지만 어떤 도움이라도 대단히 감사 할 것입니다. 감사합니다 nd다

추신. 나는 숙제라고 태그를 붙 였지만 사용하지 않을 것이다. 죄송합니다!

+0

숙제가 너무 많아 향후 방문자가 사용할 수 없기 때문에 부분적으로 숙제 태그가 사용되지 않습니다. , 나는 이걸 닫으려고 투표했습니다. – djechlin

+0

'void'유형은 '유형 없음'을 의미합니다. 그래서'void'를 리턴하는 함수는 아무 것도 반환하지 않으며'void'만을 인수로 갖는 함수는 인자를 취하지 않습니다. C++에서 마지막은 괄호의 빈 집합으로 단축 될 수 있습니다. –

+0

당신이 놓친 강의는 교과서의 독해 과제와 함께해야합니다. 독서 했니? 급우에게 강의 노트를 가져올 수 있습니까? 어쩌면 강사가 강좌 웹 사이트에 메모 또는 슬라이드를 제공 할 수도 있습니다. –

답변

1

출력 매개 변수는 함수에서 데이터를 다시 보내는 또 다른 방법입니다. 본질적으로 값을 반환하지 않고 함수가 응답을 보낼 곳으로 보냅니다. 상자에 대답을 넣으면 수정되고 대답은 함수가 실행 된 후에 그 답을 얻을 수 있습니다.

A "표준"반환 값 (당신처럼) :

int product(int a, int b) 
{ return a*b; } 

표준 함수 호출 :

int answer = product(10, 5); 
cout << answer << endl; 

에 "출력 매개 변수를"대신 실제 값으로 answer을 전달하는 (5 또는 3과 같이), 답을 입력해야하는 상자를 보내십시오. 이 상자의 내용을 변경하면 main 함수의 변수 값도 변경됩니다 (int answer 대신 int & answer으로 표시됨).함수가 이렇게 정의 된 경우

int answer; 
// send answer in as a place to put the answer 
product_output_parameter(10, 5, answer); 
// the value stored in answer has changed 
cout << answer << endl; 

:

void product_output_parameter(int a, int b, int & answer) 
{ answer = a*b; } 

함수를 호출 answer

void product_output_parameter(int a, int b, int answer) 
{ answer = a*b; } 

변경은 함수 내에서 일어날 것, 그리고 그것은 작동하지 않을 것이다 .

희망이 도움이됩니다.

+1

그렇습니다! 도움을 주셔서 대단히 감사합니다! 당신의 철저한 대답에 감사드립니다. 너 락! –

0

사용자가 작성한 함수는 제품을 계산하고 제품 기능을 호출합니다. 이런 식으로 호출 할 수도 있습니다.

int productOfA 및 B = product (a, b);

Referecing을 사용하면 호출자 범위 내의 변수를 수신자에게 변경할 수 있습니다. 클래식 예제는 PE를 위해 바꾼 방으로 Bob을 보내고,이 과정에서 Bob은 단순히 라커룸으로 가서 변경된 Bob으로 계속 진행하도록 변경했습니다. Bob이 라커 룸으로 복사 된 다음 원래 Bob을 교체 한 라커 룸에서 반환 된 경우 리턴 값 기능과 유사하게 작동합니다. 값에 의한

  1. 패스 값 BOB = changForPE (BOB)에 의해 리턴 //이 함수 갖는다 //이 효과적으로 참조 changeForPE (& BOB)에 의해 완전히 새로운 BOB
  2. 패스 BOB 대체 BOB 변수 에 저장된 변수에 무언가를 할 수 있지만 BOB 변수를 덮어 쓰는 것 같지 않음
+0

나는 비유를 좋아한다. 나는 미래에 그것을 기억하는 데 어려움이 없다고 확신한다. 너무 감사합니다! –

+0

나에게 배운 녀석 C++ 많은 달 전에 Bob이 지명되었고 그는 그에게서 아이디어를 훔쳤다. –