Reply to Re: if $a =& $b is assignment by reference, why don't you need to dereference it?

Your name:

Reply:


Posted by Jerry Stuckle on 09/28/07 22:28

Summercool wrote:
> sorry, the message was accidentally posted before it was complete:
>
> First of all, I think in the very traditional and basic form of
> "reference", it means "pointers".
>
> So that's why in C,
>
> when you say
>
> int *ip;
>
> ip is a pointer or "reference" to an integer. and that's why when you
> use it to get back the integer, you need to do *ip and that's called
> "dereference".
>
> So in C++, it seems that there is a different kind of reference, and
> that's like an alias type of reference? So in C++, Java, and PHP, you
> can have
>
> a = 10; b = 20;
> int i = a;
> int &j = i;
> printf "%d", j; and you get 10?
> j = b;
> printf "%d %d", i, j; and both are 20 now?
>
> that's different from the traditional pointer reference
>
> a = 10; b = 20;
> int *ip = &a; // ip pointers to an integer
> int *jp = ip; // jp pointers to the same integer
> printf "%d", *jp; // print 10
> jp = &b; // now jp pointer to a different integer
> printf "%d %d", *ip, *jp; // now it prints 10 and 20
>
>
> the first behavior is the same as PHP's
> $a =& $b
>

That is correct. $a is a reference to $b.

> the second behavior is the same as PHP5's object assignment:
> $obj1 = $obj2
>

In PHP5, objects are automatically references. If you want a new copy,
you need a clone() method.

> so it seems like both are called a reference?
>

Yes, the only difference being the first is explicit, the second implicit.

> Isn't there standard names for their difference? The first one is
> more like "an alias reference". The second one is like "a pointer
> reference". I think calling them the same as "reference" is very
> dangerous as they mean different things and behave differently.
>

They are both just references.

>
> some discussions:
> http://en.wikipedia.org/wiki/C%2B%2B_reference
> http://en.wikipedia.org/wiki/Reference_%28computer_science%29
>
>
>

I haven't looked at them, but don't believe everything you see in wikipedia.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация