포인터

 

int a=10;           //a에 10 저장

int* ap = &a;     //포인터변수 ap에 변수a의 주솟값 저장

    //=>int* 로 선언된 포인터 변수는 int형 변수의 주솟값만을 저장할 수 있다.

 

/* ---------------------------------------

↓주소값 : 48                          ↓주소값 : 52         

       52                    →                 10       

포인터변수 ap    (가리킨다)      int형 변수 a

--------------------------------------- */

 

printf("%d", a);        //a값 출력 52

printf("%d", *ap);    //printf("%d", *&a);와 같으므로 printf("%d", a);이다. 따라서 a값 출력 52

    //=>포인터 변수 앞에 *을 붙이면 포인터 변수가 가리키는 곳에 저장된 값을 가져온다.(*과 &가 상쇄됨)

printf("%u", ap);     //printf("%d", &a);와 같다. 따라서 a의 주솟값(ap)출력 48

printf("%u", &a);    //a의 주솟값을 출력 52

printf("%u", &ap);  //ap의 주솟값 출력 48

 

 

배열 포인터

 

int ary[5] = {10, 20, 30, 40, 50};

int* ap = &ary[0];     //&ary[0] = ary 이므로 ary[0] = *ary = *ap

 

/* -----------------------------------------------------------------------------------------------------

ary[0] = 10

ary[1] = 20

ary[2] = 30

ary[3] = 40

ary[4] = 50

↑주소값(ap) : 36        ↑40                           ↑44                          ↑48                          ↑52

  = &ary[0]                  = &ary[0]+1                = &ary[0]+2               = &ary[0]+3               = &ary[0]+4

------------------------------------------------------------------------------------------------------*/

 

printf("%u", ary);      //36

printf("%u", ary+1);   //40

printf("%u", ary+2);   //44

printf("%u", ary+3);   //48

printf("%u", ary+4);   //52

 

'Programming > C' 카테고리의 다른 글

C언어 정리(6)  (0) 2015.08.06
C언어 정리(5)  (0) 2015.07.20
C언어 정리(3)  (0) 2015.07.20
C언어 정리(2)  (0) 2015.07.20
C언어 정리(1)  (0) 2015.07.20

+ Recent posts