C++ Pointers and Memory – Free Coding Tutorials



* 배열의 이름은 무엇을 의미하는가?

배열의 이름은 포인터이다. 단 그 값을 바꿀 수 없는 '상수 형태의 포인터'이다. 다음 예제에서는 이러한 사실을 증명하고 있다.

- 열혈 C 프로그래밍(윤성우 저) 에서 -



 우리나라 C프로그래밍 기초 기본서로 꽤 유명한 '열혈 C 프로그래밍'(윤성우 저)에서는 위와 같이 배열의 이름은 포인터라고 언급하고 있습니다. 물론, 저도 이 책을 처음으로 프로그래밍을 시작하고, 프로그래밍의 아주 기본적인 기법이라던지, C프로그래밍의 기본적인 문법을 익히고 기본 개념을 쌓는데 큰 도움을 받은 것이 사실입니다.


 하지만, C프로그래밍의 최고급 지식을 쌓기 위해 고군분투하는 요즘, 윤성우님의 책보다 조금 더 권위있는 책을 읽고 있습니다. 그리고 그 책에는 '배열의 이름은 포인터가 아니다'라고 언급하고 있습니다.


배열과 포인터에 대한 일반적인 오해는 서로 완벽하게 맞바꾸어 사용할 수 있다고 생각하는 것이다. 배열의 이름은 포인터가 아니다. 때로 배열의 이름을 포인터로 다루기도 하고, 배열의 표기가 포인터와 함께 사용되기도 하지만, 둘은 분명히 구분되어야 하고 언제나 서로 대치할 수 있는 것은 안다. 이 차이점을 이해하면 배열과 포인터의 표기법을 잘못 사용하지 않을 수 있다


- Understanding and Using C Pointers (리차드 리스 저) 에서 - 


  배열의 이름만 따로 사용한다면 배열의 주소를 반환하기는 하지만, 배열의 이름을 할당(assignment)의 대상으로 이용할 수 없으므로, 배열의 이름을 포인터와 동일한 개념, 혹은 포함되는 개념등으로 이해하면 안된다는 것입니다.




+ Recent posts