C언어. 포인터 알아보기

최대 1 분 소요

🌟 포인터란?

포인터는 동적 할당을 위해 주로 쓰이며 메모리 주소를 통해 변수를 집어넣을 수 있다.

int a = 10; 
int* a_ptr = &a; //변수 a의 메모리 주소를 a_ptr에 지정

여기서 int* a_ptr은 int형 변수의 주소를 저장하는 변수고, &는 포인터 연산자인데, 참조 연산자라 불리며 a의 주소를 가르킨다.

따라서 a의 메모리 주소를 a_ptr에 넣은 것!

*a_ptr = 0;

a_ptr이 가리키는 메모리 주소는 a의 메모리 주소이므로, 10이 들어 있었는데 *a_ptr에 다른 값을 집어넣으면 역참조가 되어 a의 값이 0이 된다. 즉, a_ptr이 가리키는 메모리 주소는 a의 주소이므로 그곳의 값이 바뀌어서 a의 값이 바뀌었다는 것.

🌟 주의사항

int* ptr = NULL; //초기화
int num = 5;
ptr = #

당장 주소값을 넣을 게 아니라면 포인터는 NULL 값으로 초기화 해주어야 한다. 그렇지 않으면 쓰레기 값이 들어가서 낭비가 됨!

ptr = 5;

또한 *ptr이 아닌 ptr에 숫자를 넣는 것은 변수 값이 아닌 메모리 주소를 넣는 것이라서, 저런 식으로 지정했다간 메모리 주소가 5인 곳으로 포인터가 가리킬 것이다. 매우 위험!!

댓글남기기