두 변수 (반환 값과 다른 값)를 변경하는 방법을 궁금해서 매개 변수 앞에 '&'이라는 함수를 호출했을 때 비틀 거 렸습니다. 매개 변수의 주소) 함수를 통해 '*'부호로 참조하십시오 ("역 참조"라고하며 주소의 객체를 변경 함).포인터와 C++ 함수 인수의 참조
어쨌든 괜찮 았는데, 친구는 변수가있는 함수를 직접 호출하고 머리글 앞에 &이라는 변수를 참조하고 함수 전체에서 정상적으로 처리 할 수 있다고 말했습니다. 이 방법이 더 쉬워 보입니다. 그렇다면 왜 웹상에 더 많은 정보가 없습니까? 한 스타일이 다른 스타일보다 정확합니까?
void foo(int &junk) //The way the friend said
{
junk++;
}
void oof(int *junk) //what I found, and what the internet seems full of
{
(*junk)++;
}
int main()
{
int junk=1;
std::cout << junk << "\n";
foo(junk);
std::cout << junk << "\n";
oof(&junk);
std::cout << junk;
}
이 출력 :
1
2
3
그래서 모든 것이 잘 작동
, 나는 가정 것입니다.
및 매개 변수의 이름은 "참조 변수"를 만들어 사용. 고전적인 포인터 접근법 인'void oof (int * junk)'가 C에서 이와 같은 것을 할 수있는 유일한 방법입니다. 많은 사람들은 포인터를 변경하려고 할 때 포인터를 사용하는 것을 선호합니다. 변수를 수정하려고합니다. 참조 변수 접근법은 'void (const int & junk)'와 같은 const 매개 변수와 함께 사용되는데, 이는 인수가 수정되지 않는다는 것을 의미합니다. –
OP는 [다중 반환 값] (http://stackoverflow.com/questions/7624779/returning-multiple-data-items-from-a-function-in-c-or-c)을 원한다고 표시했습니다. 현재 답변이나 제안 된 복제본에 언급되지 않았습니다. 이를 위해, ['std :: tuple'] (http://en.cppreference.com/w/cpp/utility/tuple)을 반환하고 평소와 같이 인수를 계속 받아들이는 것과 같은 것을 생각해보십시오. –