ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 포인터(1)
    @ 16. 1 ~ 17. 1/C++ 2013. 1. 29. 22:08

    1 메모리의 주소 1개는 1byte의 메모리 공간을 갖는다

    2 변수는 자료를 저장할 수 있는 메모리 공간의 이름

    3 자료형의 크기에 따라 변수가 사용할 메모리 공간의 크기 결정..char int 등..

    4 변수의 시작 주소는 &연산자를 변수 앞에 붙여 사용

    #

    5 변수의 시작주소는 그 변수의 자료형의 주소를 의미

    6 *연산자를 주소앞에 붙이면 메모리 이름으로 사용할 수 있다.

    즉..int형 변수 n이 있다면 &n은 int형 주소이고..

    *&n은 n과 같다..

     

    포인터란 주소를 저장하기 위한 메모리 공간이다.

    주소를 저장하는 변수 포인터

    포인터 변수의 선언은 *를 붙여 선언한다. char *cp는  char형 주소를 저장하는 변수 cp를 의미

    포인터 변수의 크기는 항상 4byte다

    *은 주소앞에 사용하면 주소가 가리키는 메모리 값을 의미한다.

    char c='a';

    char *cp = &c;

    *cp, c 둘다 출력시 a

    *cp = b이럴시..

    c의 값도 b로 변경됨..

     

    다차원포인터

    포인터 변수의 주소를 저장하는 포인터

    int n= 20;

    int *np = &n이라면..

    np의 시작주소를 저장하기 위해선..그전 np가 포인터 변수이므로 다차원 포인터에 저장해야한다.

    &n을 1차원 int형 주소라 하고 &np를 2차원 int형 주소라 한다.. &np를 저장하기 위해선 2차원 포인터 변수를 사용

    int **npp; 이런식으로..

    npp=&np;

    npp역시 4byte 크기...

    *np는 n과 같은 메모리고..**npp도 n과 같은..

    np, *np, **npp는 모두 20값을 출력

    &np, np, *np 는 모두 같은 주소값 출력..(np의 주소값)


    char c = 'a';

    char *cp;

    char *cpp;

    cp = &c;

    cpp = &cp;

    c는 char형 변수이고, cp는 1차원 char형 주소, cpp는 2차원 char형 주소

    c + 1는 정수 1을 가산하라는 것

    cp + 1은 char형(1byte)만큼 건너뛰겠다.

    cpp + 1은 char형 1차원 주소만큼 건너뛰겠다는 의미 4byte 증가

    왜냐면...cp가 뭔고..&c의 주소값이니까....

    cpp는? cp의 주소값을..

    sizeof(c), (cp), (cpp) 했을시 값은 1, 4, 4  // char형 크기, char형 포인터 크기, char형 포인터 크기

    sizeof(c), (*cp), (**cpp) 했을시 값은 1, 1, 1 // 최종적으로 가르키는 값들 크기..char형

    뭥미

    '@ 16. 1 ~ 17. 1 > C++' 카테고리의 다른 글

    포인터와 문자열(2)  (0) 2013.01.31
    배열(1)  (0) 2013.01.29
    Template (3) 클래스 템플릿 특수화  (0) 2013.01.29
    Template (2) 클래스 템플릿  (0) 2013.01.29
    Template (1) 함수 템플릿  (0) 2013.01.29
Designed by Tistory.