게임학원, 게임프로그래머 취업 전문 교육기관 DirectX11/12 자체엔진 게임개발과정,서버프로그래밍,자료구조,알고리즘,유니티,언리얼 게임학원, 언리얼학원 C언어 포인터
본문 바로가기

C언어 포인터

1. C언어 포인터


 처음 C, C++ 입문하시는 분들이 가장 어려워하는 부분 중 하나가 바로 포인터입니다.

제가 생각할 때 처음에 가장 쉽게 이해하는 방법은 바로 그림을 그리면서 하나씩 쫒아가 보는 방법입니다.


자, 포인터란 무엇인가 하면 변수의 주소를 저장하는 변수를 말합니다.

저번 변수를 설명할 때 보았던 그림을 다시 보겠습니다.


short   Num1 = 10;
int     Num2 = 12;
char    Ch1 = 'a';

다음과 같은 3개의 변수에 대해서 주소값을 저장하는 포인터 변수를 선언하게 되면, 다음과 같습니다.

    // 변수
    short   Num1 = 10;
    int     Num2 = 12;
    char    Ch1 = 'a';

    // 포인터
    short*  pShort = &Num1;
    int*    pInt   = &Num2;
    char*   pChar  = &Ch1;


먼저 해당 변수의 주소값을 표현하기 위해서 변수명 앞에 &(앤퍼센드) 기호를 붙이는 것을 알 수 있습니다.


pShort, pInt, pChar 는 주소를 담기위한 변수입니다. 이 포인터 변수들의 선언된 자료형을 보면,

short 타입 변수 Num1 의 주소를 담기위한 변수 pShort 는 자료형이 short* 로 선언되어 있습니다.

int 타입 변수 Num2 의 주소를 담기위한 변수 pInt 는 자료형이 int* 로 선언되었습니다.

char 타입 변수 Ch1 의 주소를 담기 위한 변수 pChar 는 자료형이 char* 로 선언되었습니다.


이를 통해서 알수 있는 건 포인터 변수의 자료형은 자신이 저장할 주소에 해당하는 변수타입에 *를 붙인 형태입니다.

또한 그림을 보면 주소를 담는 포인터 변수들은 타입에 상관없이 4바이트의 크기를 차지하고 있는 것을 알 수 있네요.


그렇다면 변수의 주소값을 가져와서 무엇을 할 수 있을까요?


다음 코드를 살펴 보겠습니다.

    // 주소값이 가리키는 원본을 수정한다.
    *pShort = 12;
    *pInt = 
15;
    *pChar = 
'b';

pShort short 타입의 변수 Num1 의 주소값을 저장하고 있었습니다.

*pShort 의 의미는 주소타입 변수 명 앞에 *을 붙임으로서, 주소값이 가리키는 변수에 접근한다는 의미입니다.

즉 우리는 포인터 변수를 통해서 거기에 담긴 주소값으로 원본 변수를 수정할 수 있습니다.


앞으로 포인터가 정확하게 무엇인지, 어떻게 활용 할 수 있을지 알아보도록 하겠습니다.


- by Raimondo  




'정보 & 소식 > C, C++' 카테고리의 다른 글

[Effective C++] 클래스의 생성  (0) 2016.05.18
배열과 포인터  (0) 2016.04.28
포인터와 운영체제  (0) 2016.04.28
전처리문의 종류  (0) 2016.04.28
C언어 기본 자료형  (0) 2016.04.28