Grant Edwards wrote:
The "pass by value" and "pass by reference" parameter passing
mechanisms are pretty well defined, and C uses "pass by value".

Yeah, that's kind-a funny, cause I'm one of the guys (old farts) that helped define them....


The problem you're having here is that you're thinking of parameter passing 'mechanisms' and not focusing on the definition of the terms.

A reference is a pointer (an address).

A value is memory (not an address).


These definitions go all the way back before the 8080, or the 6502, 8 bit processors. Pass by reference has 'always' meant pass by using a memory address (indirect addressing); a reference has always been a memory pointer.


If I call a function in C, and pass-by-value, the data's 'value' is placed on the stack in a stack-frame, as a 'value' parm... its a copy of the actual data in memory.

If I call a function in C, and pass-by-reference, the data's 'address' is placed on the stack in a stack-frame, as a 'reference' parm... no data is copied and the function must de-reference the pointer to get to the data.... this is by definition.



There may be some language somewhere that does pass-by-reference which is not implemented under the hood as pointers, but I can't think of any... 'cause like I've been saying, way down under the hood, we only have direct and indirect memory addressing in today's processors. EOS.

If you pass a parm, you can either pass a copy (value) or pass a reference to its location (not a copy, a reference).


kind regards,
m harris




--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to