C언어. 포인터 알아보기
🌟 포인터란?
포인터는 동적 할당을 위해 주로 쓰이며 메모리 주소를 통해 변수를 집어넣을 수 있다.
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인 곳으로 포인터가 가리킬 것이다. 매우 위험!!
댓글남기기