[C/C++] 함수의 매개변수선언시 포인터사용할때..
큰재
2023.04.01
안녕하세요..^^
개념적인 부분에 약간 혼동스러워서 질문드립니다.
보통 함수머리에
int big(int a,int b);
이렇게 사용하잖아요 이건 값에의한전달 (value)잖아요..
그리구 int big(int* a,int* b) 이건 참조에의한 전달(reference) 전달인데요..
책에서 이런말을 설명하더군요 만약 전달하는 인자가 포인터일때 주소값을 전달할때
int big(int* a,int* b)는 값에의한 전달이라고 하더군요 주소값을 복사하는식으로 된다던데요
그럼 참조(reference)로 전달할려면 int big(int** a, int** b)이렇게 더블포인터를 사용해야하는건가요?
-
패틱
제가 이야기 할때에는 C 에서는 절대로 참조가 전달되지 않는다고 이야기 합니다.
포인터 주소를 이용해서 참조할 뿐이지. 결국 그 포인터 주소 역시 copy 되기 때문이죠.
int big( int* c , int* d ) { .. }
int a, b;
big( &a , &b );
이렇게 있다고 하면. a의 주소( 1000 ) 이라는 값이 결국 함수의 c 의 값으로 복사가 됩니다.
단지 그 c 라는 놈은 int 를 가리킬 수 있는 포인터라는것이지요..