Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 지식 보관소

포인터 Pointer 본문

프로그래밍 언어/C

포인터 Pointer

야식은진리다 2020. 1. 5. 03:16

포인터란

포인터는 메모리의 주소를 저장하는 변수이다.

 

type형 변수의 주소 값을 저장하는 포인터 변수의 선언 방법은 아래와 같다.

type* ptr

여기서 의문이 들수 있다. 주소 값을 저장하는 변수라면 그 크기가 모두 같을 텐데 왜 굳이 서로 다른 포인터형을 쓸까?

대답은 참조를 위해서이다. 만일 주소값만 주어졌다면 우리는 그 값을 어떻게 읽어 들여야 할까? 주어진 주소 값을 시작으로 4바이트를 읽어야 할까? 8바이트를 읽어야 할까? 이렇듯 포인터형은 메모리 공간을 참조하는 기준이 된다.

 

널포인터

포인터를 사용할 때 선언만 해두고 초기화를 하지 않는다면 포인터에는 쓰레기 값이 존재하게 된다. 이 상태에서 역참조 연산자를 통해 값을 변경하게 되면 어딘지도 모르는 메모리 공간을 변경해버리게 된다. 이러한 작업은 시스템에 심각한 문제를 일으킬 수 있다. 때문에 포인터 변수를 선언해두고 이후에 유효한 값을 할당할 생각이라면, NULL로 초기화 해두는게 좋다. NULL은 0으로 정의되어있으므로 포인터변수를 0으로 초기화해도 무관하다.

int* ptr = NULL;
int* ptrr = 0;//1번줄과 2번줄은 동일한 역할을 한다

여기서의 0은 메모리 상의 0번지를 뜻하는 게 아니라, 아무것도 가리키지 않음을 뜻한다.

'프로그래밍 언어 > C' 카테고리의 다른 글

다차원 배열과 포인터의 관계  (0) 2020.01.05
포인터를 대상으로 하는 const선언  (0) 2020.01.05
상수 형태의 문자열  (0) 2020.01.05
포인터 연산  (0) 2020.01.05
배열과 포인터의 관계  (0) 2020.01.05