Language/C, C++

[C] 포인터 변수

Phulasso 2020. 12. 16. 11:46

변수는 메모리 상에 저장되고, 포인터 변수는 메모리의 주소값을 저장하기 위한 변수이다.

#include <stdio.h>

int main(void)
{
    int num = 9;
    int *pNum;      // 포인터 변수 pNum 선언
    pNum = &num;    // pNum에 num의 주소값 저장

    printf("%d\n", pNum);   // 메모리 주소 출력
    printf("%d\n", *pNum);  // 메모리 주소에 저장된 값 출력

    *pNum = 20;     // pNum이 가리키는 주소에 저장된 값을 20으로 변경
    printf("%d\n", num);
    return 0;
}
/* output : 
6422296
9
20
*/

*으로 포인터 변수를 선언할 수 있고, &연산자는 피연산자의 주소값을 반환하는 연산자이다. &연산자의 피연산자는 변수여야 한다. 

*연산자는 포인터가 가리키는 메모리 공간에 접근할 때 사용하는 연산자이다. 

 

포인터 변수의 크기는 32비트 시스템에서는 주소값을 32비트로 표현하기에 4바이트이고, 64비트 시스템에선 주소값을 64비트로 표현하기 때문에 8바이트다.