C는 파라미터 넘기는 법이 pass by value 와 pass by reference 가 있다고 들 하죠?
하지만 실제 C는 pass by value 만 있고
C++ 에서 pass by reference 가 추가 되었습니다.
C에서는 포인터를 넘기는 것을 pass by reference 라고 칭하긴 했지만 진정한 의미의 pass by reference가 아니지요.
& 기호는 두가지로 사용됩니다.
---------------------------------------------------------------------------------
int i = 10;
int* p = &i; //라고 할때의 i의 주소값을 나타내는 것(dereference 라고 하죠)과
*p = 11; // i 값을 11로 변경하고 싶을때
&i != &p
---------------------------------------------------------------------------------
int i = 10;
int& p = i; // 라고 할때 i의 레퍼런스 셋팅(이건 용어를 모르겠네요)할때 이지요.
p = 11; // i 값을 11로 변경하고 싶을때 (i 랑 p가 서로 같다. 한녀석이 이름을 2개 같고 있는거져)
&i == &p
---------------------------------------------------------------------------------
내부적으로 의미가 많이 다르고 퍼포먼스가 약간 차이가 나죠.
자세한건 C++ 책을 찾아 보시는 것이 좋을 듯 하네요.
...
포인터와 레퍼런스의 차이임...
-----------^^ ^^ ^^ ^^ ^^ ----------
..........................................................
Re: &와 *의 차이...
참고로 C에서는 레퍼런스개념이 없으므로 위 문법을 적용할 수가 없습니다.
C++에서만 비교가 가능하겠죠.
C는 파라미터 넘기는 법이 pass by value 와 pass by r
C는 파라미터 넘기는 법이 pass by value 와 pass by reference 가 있다고 들 하죠?
하지만 실제 C는 pass by value 만 있고
C++ 에서 pass by reference 가 추가 되었습니다.
C에서는 포인터를 넘기는 것을 pass by reference 라고 칭하긴 했지만 진정한 의미의 pass by reference가 아니지요.
& 기호는 두가지로 사용됩니다.
---------------------------------------------------------------------------------
int i = 10;
int* p = &i; //라고 할때의 i의 주소값을 나타내는 것(dereference 라고 하죠)과
*p = 11; // i 값을 11로 변경하고 싶을때
&i != &p
---------------------------------------------------------------------------------
int i = 10;
int& p = i; // 라고 할때 i의 레퍼런스 셋팅(이건 용어를 모르겠네요)할때 이지요.
p = 11; // i 값을 11로 변경하고 싶을때 (i 랑 p가 서로 같다. 한녀석이 이름을 2개 같고 있는거져)
&i == &p
---------------------------------------------------------------------------------
내부적으로 의미가 많이 다르고 퍼포먼스가 약간 차이가 나죠.
자세한건 C++ 책을 찾아 보시는 것이 좋을 듯 하네요.
* 특이해 보이네요.pass by value? call by valu
* 특이해 보이네요.
pass by value? call by value?
pass by reference? call by reference?
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
댓글 달기