하드웨어 환경에 따라 다른데 일반적으로 32bit환경에서 포인터는 따로 4바이트를 할당하고 거기에 주소값을 대입하는거임. 레퍼런스는 일종의 별명이기 때문에 이름만 다르지 참조하는 주소값은 같을 수 있음(절대적으로 같은게 아니라 어셈 뜯어서 내부적으로 보면 const형 포인터로 변환될 때도 있음). 그래서 레퍼런스를 근본적으로는 포인터로도 볼 수 있는데, 일반적으로 레퍼런스 = 포인터 라고 말하진 않음. 보통 레퍼런스는 &를 붙인거고 포인터는 변수 선언할때 변수명 앞에 *가 오는걸 가리킨다
익명(121.137)2019-09-10 20:15
답글
그렇기 때문에 C언어에서는 레퍼런스 자체가 존재하지 않는다는 의견이 압도적으로 많음. 포인터를 이용한 Call by value 방식으로 Call by reference를 흉내내는 것뿐이며, C++에 와서야 레퍼런스를 지원한다고 말함
하드웨어 환경에 따라 다른데 일반적으로 32bit환경에서 포인터는 따로 4바이트를 할당하고 거기에 주소값을 대입하는거임. 레퍼런스는 일종의 별명이기 때문에 이름만 다르지 참조하는 주소값은 같을 수 있음(절대적으로 같은게 아니라 어셈 뜯어서 내부적으로 보면 const형 포인터로 변환될 때도 있음). 그래서 레퍼런스를 근본적으로는 포인터로도 볼 수 있는데, 일반적으로 레퍼런스 = 포인터 라고 말하진 않음. 보통 레퍼런스는 &를 붙인거고 포인터는 변수 선언할때 변수명 앞에 *가 오는걸 가리킨다
그렇기 때문에 C언어에서는 레퍼런스 자체가 존재하지 않는다는 의견이 압도적으로 많음. 포인터를 이용한 Call by value 방식으로 Call by reference를 흉내내는 것뿐이며, C++에 와서야 레퍼런스를 지원한다고 말함