▷ 포인터의 개념 정리

  - 주소를 가르킨다.

  - 메모리는 주소를 가지고 있고 주소를 통해 메모리 접근이 가능하다. 이 주소를 저장하고 있는게 바로 포인터이다.

  - 거대한 데이터(struct와 같은)를 전달 인자(매개 변수)로 전달하는 것은 메모리 낭비이므로 포인터를 전달하면

     거대한 데이터의 위치(주소)만 전달하면 되므로 효과적으로 사용할 수 있다.

 

 ▷ 흔히 책에 있는 예제

    int  nCount = 100;

    int *pCnt;

    pCnt = &nCount;

 

▷ 경험에 의한 예제

   struct stUserBaseInfo{

        int  nUserIdx;

        char[50] nCharName;

        int nCharIdx;

  }; 

   // 위의 이런 구조체가 있다는 가정이라면 거대한 데이터가 된다.

   stUserBaseInfo  meInfo;

   stUserBaseInfo  *pMeInfo;

   pMeInfo = (* stUserBaseInfo) meInfo;

                 ------------------

                     └> "데이터형 변환자"라 부른다.

  // 즉 구조체를 가지는 거대한 데이터나 클래스를 통째로 넘겨 처리가 필요하다면 포인터로 주소만 넘기는

      방법이 보다 효과적이라는 사실이다.

 

▷ 또 다른 예제

   int*  p_info;

  char*  p_chInfo;

  //다른 데이터형일 경우 주소를 가르키려면?

 

  p_chInfo = (char *) p_info;

                 -------

                    └> "데이터형 변환자"를 이용하여 다른 데이터형일 경우 주소를 가르킨다.

 

  p_info가 가르키는 주소  :  p_info

  p_chInfo가 가르키는 주소 : (int *) p_chInfo

 

 

 

▷ 포인터와 const 

  int  gorp = 16;

  int  chips = 12;

 

                      ┌> 다른 변수를 지시할 수 있다. ( p_snack = chips; )

                 ----------

  const  int  *  p_snack = &gorp;

  --------

      └> 지시하는 값은 변경할 수 없다. ( *p_snack = 20; )

 

 

                      ┌> 지시하는 변수는 변경 불가능!!

              -------------

    int  *  const  p_snack = &gorp;

   -----

      └> 값 변경 가능.

 

▷ 더블 포인터

   - 다차원 배열을 접근하는데 사용된다.

   - 책에 나와 있는대로 포인터는 더블 포인터로 받는다라는 부분도 맞겠지만 엄밀히 말하자면 더블 포인터는

     다차원 배열을 접근하는데 유용하게 사용된다는 점이다.

  char*  double_arr[] = {"abc", "def"};

  char** ptr_arr = double_arr;

 

  cout << ptr_arr[0] << endl;

 

출력 결과

abc

 

▷ 다차원 배열을 사용하지 않는 경우

   char*  double_arr[] = {"abc", "def"};

   char*  ptr_arr  =  double_arr[0];

 

   cout << "ptr_arr  :  "  << ptr_arr << endl;

   // 다차원 배열 접근이 아니라면 이렇게 접근이 가능하다.

 

 

'Languages > cplusplus' 카테고리의 다른 글

[STL] Vector + Map 연습 코드  (0) 2013.07.19
[MFC] Dialog Box 위치 변경  (0) 2012.11.26
지수표기 / enum / new 메모리 할당  (0) 2012.10.12
데이터 형변환  (0) 2012.09.26
32bit 자료형 / 64bit 자료형의 크기 정리  (0) 2012.09.26

+ Recent posts