[C 언어] 포인터 기본 개념

iOS 개발자들은 여러가지 언어를 사용하여 개발을 할 수 있다. 주류는 C 언어 개열의 Objective-C일 것이며, 새로나온 Swift를 사용해서 개발을 참여 할 것이다. 그런데 학부때 배운 C 언어의 가장 헷갈리는 개념을 뽑으라고 한다면 ‘포인터’일 것인데, 알고리즘 책을 들고 공부하다 보면 대부분의 예제가 C 코드로 되어 있어 한번 더 remind할 겸해서 리서치 해본 노트를 올려본다.

pointer-to-pointer

 

 

Definition

  1. Pointer 변수: 값이 저장되어 있는 변수의 주소를 담고 있는 변수.
  2. Dereferencing a Pointer: 가리켜고 있는 주소의 해당하는 실제 값을 뜻함.
  3. * : 해당 주소에 있는 값 연산자 (Value at address operation)
  4. & : 주소 연산자 (Address of operator)
  5. -> : 구조체 값의 데이터 접근하기

When to use?

  1. * : 포인터 변수를 선언 할 때 / Dereferencing 할 때 사용됨.
  2. & : 변수의 저장 주소를 참조 할 때 사용됨.
  3. -> : (예. ptr -> name(*ptr).name 과 동일함)

이렇게 생각 해보자.

포인터 변수 == 편지 봉투

& 포인터 변수 == 봉투에 적힌 주소

*포인터 변수 == 주소가 가리키는 실제 건물

마치며…

블로그 검색하다가 찾은 내용을 간략하게 노트에 적은 것을 잊어버리지 않기 위해서 정리해보았다. 더 자세한 내용을 코드와 함께 보기 원한다면 아래 링크를 참조하자.

http://denniskubes.com/2012/08/16/the-5-minute-guide-to-c-pointers/