본문 바로가기

메이플의 개발 스토리

C언어에서 포인터란? 본문

C언어

C언어에서 포인터란?

mapled 2021. 12. 7. 22:57

1. 포인터란 무엇인가?

포인터 = 번지 = 메모리의 위치

2. 포인터 변수 = 포인터를 저장할 수 있는 변수

즉, 포인터 변수에는 문자열, 숫자가 들어가는 것이 아니라 번지가 들어간다.

3. 포인터 변수 정의

int *intPointer;
// intPointer는 정수가 저장된 곳의 위치를 가리킬 수 있다.
// intPointer에 대하여 4바이트의 메모리를 할당해준다.
포인터에는 번지 값만 저장할 수 있으므로, 아래와 같은 식은 성립이 안 된다.
intPointer = 5;
intPointer - 'a';

그렇다면 아래 식은 어떤 값을 출력하게 될까?

main() {
  int *intPointer;
  printf("%p\n", intPointer); // (1)
  printf("%p\n", &intPointer); // (2)
}

(1)번은 intPointer에 저장된 숫자를 출력한다. (intPointer)

하지만 지금은 초기화를 해주지 않은 상태이므로, 쓰레기값이 들어가 있다.

(2)번은 intPointer에 할당된 메모리 주소을 출력한다. (&intPointer)

0x349a045 같은 값이 출력될 것이다.

int *intPointer의 정의

: intPointer에 번지를 저장할 수 있다는 뜻 => intPointer는 정수가 저장된 곳을 가리킬 수 있다!

Comments