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