Search Results for 'pointer'

ATOM Icon

1 POSTS

  1. 2007/06/09 php에서의 포인터 by 장현준

php에서의 포인터

c와 php에서 포인터는 비슷하다.
하지만 가끔 헷갈리는 경우가 있는데..
조심해야되는 경우가 있다.
c처럼 생각하고 포인터를 썼다가는 큰일이 날지도 모른다는 생각에 정리해둔다.
(고수들은 이미 다 알고 있는 사실일지도 모르지만 -ㅅ- 나같이 삽질하는 초보들을 위해 정리한다)

int *p;
int a;

a = 10;

p = &a;
*p = 5;


을 php코드로 짜면 다음과 같이 될 것이다.

$a = 10;
$p = &$a;
$p = 5;


하지만 다음은 어떨까?

int *p;
int *p2;
int a;

a = 10;

p = &a;
p2 = p;
*p2 = 5;


c에서는 a가 5로 바뀐다.

php에서는..

$a = 10;
$p = &$a;
$p2 = $p;
$p2 = 5;


라고 하면?
c로 따지면 $p는 int*이지만, $p2는 int가 된다.
즉, $p2 = $p 하는 순간 p2 = *p; 와같은 식이 되어버리고 만다는것.
이걸을 방지하기 위해 $p2가 포인터 변수라는것을 알려주기 위해 다음과 같이 바꾼다.

$a = 10;
$p = &$a;
$p2 = &$p;
$p2 = 5;


$p앞에 &를 붙이면 $p2가 포인터 변수라는것을 알려주기 때문에 원하는 결과를 얻을 수 있다.

함수의 경우, 인자를 보내는쪽(?)이나 받는쪽에서 &를 붙이게 되면 자연스럽게 둘중 하나가 포인터 같이 사용될 수 있다.
예를들어

$a = 2;

myf(&$a);

function myf($b)
{
	$b = 10;
}


와 같은 코드가 있다면 $a의 값이 10으로 바뀐다. 반대로

$a = 2;

myf($a);

function myf(&$b)
{
	$b = 10;
}


라고 해도 마찬가지의 결과를 얻을 수 있다. 물론 둘다 &라고 해도 정상적으로 된다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2007/06/09 11:53 2007/06/09 11:53
, ,
Response
No Trackback , No Comment
RSS :
http://b4you.net/blog/rss/response/100


블로그 이미지

빗소리를 먹는 사람.

- 장현준

Notices

Archives

Authors

  1. 장현준

Recent Trackbacks

  1. 듀얼클러치의 생각 rsvin28's me2DAY 2009

Calendar

«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

Site Stats

Total hits:
158011
Today:
81
Yesterday:
228