c언어에서 포인터와 참조의 차이가 뭔가요?
포인터와 참조의 차이점이 뭔가요? 실행할때 같은 값을 가지는 것 같은데 포인터는 그 메모리의 주소값을 가지고 참조는 그 메모리의 다른 이름일 뿐이라는데 잘 이래가 되지않아요...그리고 어떤 상황에 써야되는지 모르겠어요
포인터는 메모리 주소를 저장하고 있는 값이라고 이해하면 됩니다.
이게 글로만 설명보다는 그림이나 이미지가 있는 것이 이해가 빠르기는 합니다.
이미지 출처 : https://dojang.io/mod/page/view.php?id=512
0x0000000 ~ 0xFFFFFFF 이 값들이 메모리 주소라고 생각하면 됩니다.
10 ~ 60까지의 숫자가 실제 메모리에 저장되어 있는 값이라고 보면 됩니다.
포인터로 값을 출력하게 되면 메모리 주소로 접근해서 거기에 저장되어 있는 값을 가지고 온다고 보면 될것 같습니다.
예를 들어 a라는 변수에 10이라는 값을 할당하게 되면 0x00A3FC00 메모리 주소에 들어간다고 생각하면 좋습니다.
포인터 b = a라고 했을때 b는 10이 들어간 것이 아닌 0x00A3FC00 메모리 주소의 값을 저장하고 있습니다.
b의 값을 출력하면 b에 있는 메모리 주소에 있는 값을 출력한다고 생각하면 됩니다.
참조는 메모리 공간에 이름을 정해주는거에요.
포인터는 메모리 주소값을 입력을 가지고 있고, 참조는 변수명으로 입력할 수 할 수 있어요.
쉽게 포인터는 메모리를 직접 컨트롤 하는 것이고, 참조는 직접하지 않고 변수를 통해 할 수있는거라고 보시면 됩니다.
어떤 상황이란 것은 없습니다. 편한대로 쓰시면 됩니다.