Objective C/C언어 기능2010. 7. 18. 12:39


***** 포인터

1 포인터는 메모리의 주소값을 저장하기 위한 4바이트 변수(포인터의 크기가 4바이트인 이유는 32비트 컴퓨터의 주소체계가 32비트(4바이트)이기 때문)이다.

2 포인터 변수도 메모리에 할당된다.

3 & 주소연산자로서 변수의 주소지를 알아낸다.

4 * 메모리에 들어있는 값을 알아낸다.


앞서 scanf("%i" , &num);

경우 scanf뒤에 있는 &num num이라는 변수의 주소지를 담는 포인터를 선언한 것이며 

주소지를 참조하여 값을 간접적으로 저장한 것이다.

(일반 변수에 주소지만 저장하면 4바이트 참조 경로가 아닌 정말 주소지의 값만 저장되므로 나중에 참조 없다.)

 

변수 i 담긴 5 4바이트에 걸쳐 이루어진 값이다.

포인터 pi 담긴 값은 i 주소지의 시작값이고 그로부터 4바이트를 

참조하여 i 값을 알아낼 있다.

int i = 5;

int * pi = &i;

NSLog(@"%d %d", i, &i);

//5 -1073744472

/*

5 : i

-1073744472 : i 주소지

*/ 

NSLog(@"%d %d %d", pi, &pi, *pi);

//-1073744472 -1073744476 5

/*

-1073744472 : i 주소지를 담고있는 pi

-1073744476 : pi 주소지

5 : pi 담긴 주소지를 통해 들어간 i

*/ 

Posted by 버터백통