Is this documented behaviour?
John Colvin
john.loughran.colvin at gmail.com
Wed Jul 24 08:14:15 PDT 2013
On Tuesday, 23 July 2013 at 16:34:54 UTC, John Colvin wrote:
> void foo(ref int a)
> {
> a = 5;
> }
>
> void main()
> {
> int a = 0;
> int* aptr = &a;
>
> foo(*aptr);
> assert(a == 5);
>
> a = 0;
>
> int b = *aptr;
> foo(b);
> assert(b == 5);
> assert(a == 0);
> }
>
> The fact that adding an explicit temporary changes the
> semantics seems weird to me.
Thanks for the explanations people, I have now fixed a rather
worrying mistake in my programming knowledge: WHAT IT ACTUALLY
MEANS TO DEREFERENCE A POINTER!
Seriously, I've written programs in assembly and I still had it
wrong. It's a wonder I ever wrote any correct code in my life.
More information about the Digitalmars-d-learn
mailing list