[C++] 포인터와 레퍼런스 인자(Parameter)의 비교
[C++] 포인터와 레퍼런스 인자(Parameter)의 비교
함수의 결과를 얻어오기 위한 방법으로 포인터 타입과 레퍼런스 타입의 파라미터를 사용한다.
두 가지를 상황에 맞게 사용하면 되지만, 레퍼런스가 사용하기 쉽고 안전하다.
포인터 타입의 파라미터(int* a)를 사용할 때, 가장 큰 위험은 NULL 값이 넘겨져 오는 경우이다.
반드시 NULL 값은 아니더라도 올바르지 않은 주소 값이 넘어왔을 때는 심각한 문제가 발생할 수 있다.
그래서 포인터 파라미터의 경우에는 올바른 주소가 넘어왔는지 반드시 확인해야 한다.
bool checkParam(int a, int b, int* pa, int* pb){
if (NULL == pa || NULL == pb)
return false;
return true;
}
if (NULL == pa || NULL == pb)
return false;
return true;
}
포인터와 달리 레퍼런스 타입의 파라미터(int& a)의 경우에는 올바르지 않은 인자가 입력될 가능성이 없다.
만약에 올바르지 않은 파라미터를 사용할 경우에는 프로그램이 시작되기 전에 오류가 발생하기 때문에, 아예 프로그램이 실행될 수가 없다.
출처: https://hyeonstorage.tistory.com/298?category=601868 [개발이 하고 싶어요]
'기타 > C++' 카테고리의 다른 글
[C++] 문자열 합치기 strcat(), 문자열 비교 strcmp() (0) | 2019.07.27 |
---|---|
[C++] 문자열 길이 strlen(), 문자열 복사 strcpy() (0) | 2019.07.27 |
[C++] 문자열 뒤집기 예제 (0) | 2019.07.27 |
[C++] 동적 메모리 할당 예제 new delete (0) | 2019.07.27 |
[C++] 10진수를 2진수로 변환 예제 (0) | 2019.07.27 |
[C++] 두 점 사이의 거리 구하기 pow(), sqrt() (0) | 2019.07.27 |
[C++] 팩토리얼 구하기 예제 (0) | 2019.07.27 |
[C++] 최대공약수, 최소공배수 구하기 예제 (0) | 2019.07.27 |