2012-11-11 3 views
2

가능한 중복 매개 변수 :
difference between a pointer and reference parameter?차이 및 사이 * 함수는

C++ 사용 전 매개 변수 &와 *의 사용의 차이가 무엇 궁금하네요? 예를 들어

: 분명히 정수 a와 b를 교환 할

void swap(int &a, int &b) 
{ 
    int temp = a; 
    a = b; 
    b = temp; 
} 

. 그러나 다음 함수가 완전히 똑같지는 않습니까?

void swap(int *a, int *b) 
{ 
    int temp = *b; 
    *b = *a; 
    *a = temp; 
} 

나는 각각의 것을 사용하는 것이 적절한 때와 아마도 각각의 장점을 궁금해하고있었습니다.

+4

일반적인 모토는 "할 수있을 때 포인터를 사용해야 할 때 포인터 사용"입니다. –

+4

또한 [여기] (http://stackoverflow.com/questions/57483/what-are-the-differences-between-pointer-variable-and-reference-variable-in-c) 및 [여기] (http : //stackoverflow.com/questions/620604/difference-between-a-pointer-and-reference-parameter). –

+0

환호, 중복에 대한 죄송합니다 –

답변

3

포인터와 참조의 차이점은 포인터가 "없음"을 가리킬 수 있지만 참조는 그렇지 않다는 것입니다. 두 번째 샘플은 역 참조하기 전에 포인터를 널 체크해야합니다. 참조 할 필요가 없습니다.

+0

실제로, 좋은 코딩 실습 중 하나는 따를 수있는 입력 인수 (복사하지 않으려는)는 포인터 대신 const 참조가되어야하며 출력은 포인터가 될 수 있습니다. 그런 식으로 null이되는 input-args를 확인할 필요가 없으며 문제가있는 경우 함수 호출자는이를 처리해야합니다 – Sarang