이이프
IeF 제멋대로 세상
이이프
전체 방문자
오늘
어제

공지사항

  • ✔ Info
  • 전체 글보기 (56)
    • 💻프로그래밍 내용 정리 (55)
      • C (0)
      • C++17 (55)
    • 💻게임메이커 (0)
    • 💻언리얼엔진 (0)
    • 💻유니티 (0)
    • 🎈[팀&자작]게임소개 (0)
    • 📃게임제작기술 (0)
    • 🎨그림놀이 (0)
    • 📒대학생활 (0)
    • 😃잡담 (1)
    • 🕹게임성과 (0)
    • 💷자격증 (0)

블로그 메뉴

  • 방명록

최근 글

최근 댓글

티스토리

hELLO · Designed By 정상우.
이이프

IeF 제멋대로 세상

[C++ 7.1.4] 포인터 다루기
💻프로그래밍 내용 정리/C++17

[C++ 7.1.4] 포인터 다루기

2022. 8. 22. 19:35
728x90

포인터 다루기

포인터는 단지 메모리 주소이기 때문에 이론상 그 주소를 얼마든지 변경할 수 있고,

다음과 같이 위험한 일도 할 수 있다.

char* scaryPointer = (char*)7;

이 코드는 메모리 주소 7에 대한 포인터를 만든다.

이 포인터는 어떤 값을 가리키거나 다른 영역에서 사용하는 공간일 가능성이 높다.

 

new를 호출하거나 스택에 생성된 것처럼 별도로 할당된 영역이 아닌 메모리 공간을 사용하면

객체를 저장하거나 힙으로 관리하는 메모리가 손상돼 프로그램이 제대로 작동하지 않을 수 있다.

 

1. 포인터의 작동 방식

포인터는 두가지 관점으로 볼 수 있다.

첫 번째는 포인터를 주소로 보는 관점이다.

포인터는 메모리를 알 수 없는 방식으로 돌아다니는 통로가 아니다. 메모리의 한 지점을 가리키는 숫자에 불과하다.

다음은 2 x 2 격자의 메모리 주소값을 가정하여 표현한 것이다.

 

두 번째는 포인터를 화살표로 생각하는 것이다.

포인터는 손가락으로 가리키는 것처럼 참조 단계를 표현한다.

이 관점으로 보면 여러 단계로 구성된 포인터에서 각 단계는 데이터에 이르는 경로라고 볼 수 있다.

 

* 연산자로 포인터를 역참조하면 메모리에서 한 단계 더 들어가 볼 수 있다.

역참조는 포인터가 가리키는 주소로 점프하는 것과 같다.

 

& 연산자를 사용하면 특정 지점의 주소를 얻을 수 있다. 이렇게 하면 메모리에 대한 참조 단계가 하나 더 늘어난다.

이 연산자를 주소 관점에서 보면 프로그램은 특정 메모리 지점을 숫자로 표현한 주소로 본다.

공간 관점에서 보면 표현식의 결과가 담긴 위치를 가리키는 화살표를 생성한다고 볼 수 있다.

 

 


 

2. 포인터에 대한 타입 캐스팅

포인터는 단지 메모리 주소(또는 어떤 지점을 가리키는 화살표)에 불과해서 타입을 엄격히 따지지 않는다.

포인터의 타입은 C 스타일 캐스팅을 이용해서 얼마든지 바꿀 수 있다.

Document* documentPtr = getDocument();
char* myCharPtr = (char*)documentPtr;

 

정적 캐스팅을 사용하면 좀 더 안전하다.

그러면 관련 없는 데이터 타입으로 포인터를 캐스팅하면 컴파일 에러가 발생한다.

 

'💻프로그래밍 내용 정리 > C++17' 카테고리의 다른 글

[C++ 7.2.2] 포인터와 배열2  (0) 2022.08.24
[C++ 7.2.1] 배열과 포인터  (0) 2022.08.24
[C++ 7.1.3-2] 다차원 배열  (0) 2022.08.22
[C++ 7.1.3-1] 배열, 객체 배열, 배열 삭제  (1) 2022.08.22
[C++ 7.1.2] 메모리 할당과 해제(new, delete / malloc(), free()), nothrow  (0) 2022.08.22
    '💻프로그래밍 내용 정리/C++17' 카테고리의 다른 글
    • [C++ 7.2.2] 포인터와 배열2
    • [C++ 7.2.1] 배열과 포인터
    • [C++ 7.1.3-2] 다차원 배열
    • [C++ 7.1.3-1] 배열, 객체 배열, 배열 삭제
    이이프
    이이프
    게임 프로그래머 지망생 / Since 2022.08.14

    티스토리툴바