티스토리 뷰

기말고사 대비로 C언어에 대해 오랜만에 포스팅해보내요

중간에 빼먹은 내용은 추후에 다시 포스팅 하도록 하겠습니다.

이번 포스팅은 포인란 무엇인가? 에 대해 아주 자세하게 설명하도록 하겠습니다.


포인터가 무엇인지 알아보기 전 간단하게 우리 실생활에서 포인터와 비슷한 예를 하나 들도록 할게요



철수는 인터넷 쇼핑으로 멋진 운동화를 하나 샀습니다. 운동화를 받으려고 택배 아저씨에게 집 주소를 전달합니다. 택배 아저씨는 철수네 집 주소를 전달받고서 이 주소를 찾아 철수에게 운동화를 전달하였습니다.

그런데 철수는 운동화가 맘에 들지 않았습니다. 운동화를 반품하려고 철수는 택배 아저씨께 반품할 주소를 전달합니다. 택배 아저씨는 반품할 주소로 찾아갑니다. 철수의 요구사항(주소)대로 반품을 환료한 택배 아저씨는 또 다른 고객의 요구사항(주소)을 처리합니다. 택배 아저씨의 고마움을 느끼게 합니다.


출처 : 열혈강의 C언어 본색 中



위 이야기에서 택배 아저씨는 고객의 요청에 따라 그 주소로 찾아가 물건을 주거나 받고 합니다.

여기서 택배아저씨와 같은 역활이 바로 포인터 변수 입니다.

포인터 변수는 공간의 주소를 알려주면 해당 주소를 기억(저장)하고 있다가 해당 주소에 간접적으로 접근하게 됩니다.


이제 본격적으로 들어가보도록 할게요


포인터란 무엇인가?


포인터는 주소를 저장하는 변수입니다.


그럼 기존에 있던 변수와 포인터 변수의 차이점은 무엇인가요?


기존의 변수는 데이터를 저장하는 변수입니다.

포인터 변수는 메모리 공간의 주소를 저장하는 변수 입니다.


포인터 변수는 주소를 저장하는 변수이면 값은 어떻게 읽어오나요?


포인터 변수는 위에서 말했다 싶이 주소를 저장하는 변수입니다.

&를 이용해서 해당 변수의 주소를 알 수 있고

*를 이용해서 주소에 저장된 값을 참조할 수 있습니다.

따라서 포인터 변수가 저장하는 변수의 주소에 저장된 값을 참조할려면 *연산자를 사용합니다.


포인터 변수의 사용 방법은?


int* pointer=NULL


int* -> 자료형 (자료형 다음에 *연산자를 붙인다.)

pointer -> 포인터 변수의 이름

NULL -> 포인터 변수 선언시 NULL로 초기화 시켜줘야 합니다. 

WHY?--> 왜냐하면 포인터 변수는 주소에 있는 값을 참조해야 되는데 포인터 변수에 아무것도 할당이 되어 있지 않으면 공간이 생기지 않으므로 값을 참조한다고 해도 그 값을 참조한걸 저장할 공간이 없기 때문입니다. 그래서 NULL로 초기화를 시켜주어야 합니다.


포인터가 무엇인지 간단하게 알아보았습니다.

이제 아주 간단한 기본적인 예제를 통해서 포인터에 대한 기초 개념을 확실히 잡도록 하죠


예제를 통해서 알아보자!


위에서 말한대로 포인터 변수 사용 방법대로 사용한것을 볼 수 있습니다.





위에서 말한대로 &연산자를 사용하면 변수의 주소를 알 수 있다는걸 보여줍니다.










여기서 알 수 있는건

*&cp = cp 라는걸 알 수 있습니다.



이 글이 유익하셧다면 아래 손가락 모양 클릭해 주시면 감사합니다.




Comments