본문 바로가기
Save Base/Save(Facebook)

C++ - 참조자 반환문제

by 멘탈은안녕하신가 2017. 9. 23.
728x90
반응형

- 문제

C/C++ 관련 질문 입니다!

C++의 참조자를 공부하다 갑자기 예제로 다음과 같은 코드가 나왔습니다. 
int * SimpleFunc(int * ptr)
{
. . . .
}

함수의 반환값에 포인터가 붙은 경우인데, 이리저리 찾아보니 '값을 반환할때 int형 포인터로 반환한다.' 라는 의미는 알겠는데 실제로 어떨때 써야하는지 잘 모르겠습니다.

책에선 포인터 반환형에 대해 설명한게 아니라 '위 함수에 어떤 정의가 들어가느냐에 따라 call by value와 call by reference로 나뉜다.'에 대해 설명하고 있는거라서 잠깐 예제로 나온것이거든요.

책의 코드는 아래와 같이 나와있습니다.
Call by value인 경우, 
int * SimpleFunc(int * ptr)
{
return ptr +1 
}

call by reference인 경우, 
int * SimpleFunc(int * ptr) 
{
if(ptr==NULL)
return NULL; 
*ptr=20; 
return ptr; 
}

설명에는 '주소 값을 이용한다'는 말이 많이 나와 있는데 주소 값을 가지고 결과를 구하는 경우에 쓰인다는 걸까요?(예를들어 int형 포인터에 +1을 했을때 주소 값이 몇 증가했는가와 같은...) main 함수가 없어서 혼자 이렇다 할 판정을 못내리고 있습니다..(으아아앙)

검색을 해봐도 제가 원하는 설명이 없는것 같습니다. (키워드가 잘못된건지...) 명확하게 '이거다!' 하는게 없는데, 이해하기 쉽게 정리가 잘 된 사이트나 아니면 간단하게 함수의 반환형에 포인터(*)나 참조자(&)가 올 경우 어떻게 쓰이는지 알려주시면 감사하겠습니다!

+ 질문을 정리해보자면 함수의 반환값에 포인터나 참조자가 올 경우 어떻게 쓰이는가? 입니다!

- 저는 '주소를 활용한 결과물의 출력을 원할때 사용'이라고 생각했는데 이게 맞는걸까요?

매번 감사합니다.
즐거운 하루 되세요~!


- 해결

이런 질문도 했었구나 싶은 추억에...

정리하려면 시간이 오래걸리니 링크로 대체


- 링크

https://www.facebook.com/groups/codingeverybody/permalink/1079601562080379/

728x90
반응형

댓글