주제별 이야기/게임프로그래밍 2006/07/11 17:28
소스코드
결과창

다이어그램

Quotataion
포인터 변수 앞에 쓰인 '*' 연산자는 보통 "P가 가리키고 있는 변수의 값을 가져온다" 라고 말하는데, 사실 정확한 정의는 "P가 가리키고 있는 곳=장소" 그 자체입니다.
출처 : http://blog.naver.com/bitessay/130004157487
My Comment
아니 왜 이걸 몰랐을까. Direct X를 공부하다가 뜬금없이 포인터에서 막혔다. 더블포인터의 개념에 대해 제대로 숙지하지 못해서 이런 일이 생겼다. 잘 생각해보니 "*"이라는 연산자가 무엇을 의미하는지도 제대로 모르고 있었던 것이다.
네이버 지식인에서 적절한 예제를 찾아 직접 코드를 돌려보고 그림을 그려보니 이해가 되었다. 너무 기쁜 나머지 스크린샷을 뜨고, 다이어그램을 직접 그려서 포스팅한다.
그러니까 결론은 연산자 "*"의 의미는 "포인터 변수가 가리키는 곳에 있는 값"이 되겠다.
그래서 "**"은 "포인터 변수가 가리키는 곳에 있는 값이 가리키고 있는 곳의 값"이 되겠다.
난 돌아보니 기본도 모르고 있었어. 허허허허...
그래도 기분은 좋아. 확실히 알게되었거든!
----------------------------------------------------------------------------------
추가판
더블포인터를 사용하는 이유
만약에 그냥 포인터 값을 넘겨 받는다면, 포인터가 가리키는 영역이 (null로 아직 지정이 안되있을수도 있고) 확실하지 않을수가 있으므로 그곳에다가 데이터를 쓰게 된다면 잠재적인 메모리 에러의 원인이 될 수 있다. 그러므로 더블포인터를 사용하고 함수 내부에 동적할당과정을 맡겨버리면, 함수가 메모리를 할당하고 그 주소값을 메모리를 가리키는 포인터에 초기화시키게 되고 그 포인터의 주소값을 더블포인터 변수에 넣어주는 것이 안전하기 때문이다.
그냥 포인터를 넘겨줄수도 있겠지만 좀 더 안전한 처리를 하기 위한 함수 디자인상의 이슈라고 할 수 있겠다.
두서없지만 내가 이해한대로 적어본다.

결과창

다이어그램

Quotataion
포인터 변수 앞에 쓰인 '*' 연산자는 보통 "P가 가리키고 있는 변수의 값을 가져온다" 라고 말하는데, 사실 정확한 정의는 "P가 가리키고 있는 곳=장소" 그 자체입니다.
출처 : http://blog.naver.com/bitessay/130004157487
My Comment
아니 왜 이걸 몰랐을까. Direct X를 공부하다가 뜬금없이 포인터에서 막혔다. 더블포인터의 개념에 대해 제대로 숙지하지 못해서 이런 일이 생겼다. 잘 생각해보니 "*"이라는 연산자가 무엇을 의미하는지도 제대로 모르고 있었던 것이다.
네이버 지식인에서 적절한 예제를 찾아 직접 코드를 돌려보고 그림을 그려보니 이해가 되었다. 너무 기쁜 나머지 스크린샷을 뜨고, 다이어그램을 직접 그려서 포스팅한다.
그러니까 결론은 연산자 "*"의 의미는 "포인터 변수가 가리키는 곳에 있는 값"이 되겠다.
그래서 "**"은 "포인터 변수가 가리키는 곳에 있는 값이 가리키고 있는 곳의 값"이 되겠다.
난 돌아보니 기본도 모르고 있었어. 허허허허...
그래도 기분은 좋아. 확실히 알게되었거든!
----------------------------------------------------------------------------------
추가판
더블포인터를 사용하는 이유
만약에 그냥 포인터 값을 넘겨 받는다면, 포인터가 가리키는 영역이 (null로 아직 지정이 안되있을수도 있고) 확실하지 않을수가 있으므로 그곳에다가 데이터를 쓰게 된다면 잠재적인 메모리 에러의 원인이 될 수 있다. 그러므로 더블포인터를 사용하고 함수 내부에 동적할당과정을 맡겨버리면, 함수가 메모리를 할당하고 그 주소값을 메모리를 가리키는 포인터에 초기화시키게 되고 그 포인터의 주소값을 더블포인터 변수에 넣어주는 것이 안전하기 때문이다.
그냥 포인터를 넘겨줄수도 있겠지만 좀 더 안전한 처리를 하기 위한 함수 디자인상의 이슈라고 할 수 있겠다.
두서없지만 내가 이해한대로 적어본다.


0