Written on
·
179
1
void doSomething(int num)
{
cout << (uintptr_t)&num << endl;
cout << num << endl;
}
int main()
{
int num = 1;
cout << (uintptr_t)&num << endl;
cout << num << endl;
doSomething(num);
return 0;
}
안녕하세요. 공부하다가 궁금한게 생겨서 질문드립니다.
배열 뿐만 아니라
정수를 파라미터로 받을 때도 포인터로 받는 것이고
그 포인터에 받은 변수의 주소가 저장이 되어 있는 건가요?
예를들어 main 함수의 num 의 주소와값이 1480 - 1이라고 할때
doSomething함수의 num의 주소값은 1436이고 이 주소가 1480 - 1을 담고있는 것일까요??
Answer 1
1
안녕하세요, 답변 도우미 Soobak 입니다.
그렇지 않습니다.
해당 경우에는 저장되어 있는 주소의 값은 같지만, 메모리 주소(주소의 값을 저장하고 있는 메모리의 주소)는 다릅니다.
doSomething()
함수의 num
이 main()
의 num
의 주소를 "담고 있다" 라고 보기보다는, 단순히 그 값의 복사본을 가지고 있다고 이해하시는 것이 옳습니다.
해당 부분은 "값에 의한 전달", "참조에 의한 전달", "주소에 의한 전달" 등의 개념으로 좀 더 정확하게 구분되며,
섹션 7 함수 파트의 7.2 값에 의한 전달, 7.3 참조에 의한 인수 전달, 7.4 주소에 의한 인수 전달 강의에서 자세하게 학습하시게 됩니다.