ru...@yahoo.com <ru...@yahoo.com> wrote: > What is the observable difference between converting an > array to a reference (pointer) to that array and passing > the reference by value, and passing the array by reference?
For one: #include <stdio.h> static size_t foo(char v[]) { return sizeof v; } int main(void) { char v[sizeof(char *) * 10]; puts(foo(v) == sizeof(char *) ? "pointer" : "reference"); return (0); } For another: static void bar(char v[]) { char ch = 0; v = &ch; } /* type error if arrays truly passed by reference */ > I guess the case for pass-by-value would be a little stronger because > one has to have "passing a pointer by value" anyway (since pointers > are first-class datatypes) and that can be used to describe passing > arrays (as you described). The difference is that the /callee/ function is different between the two cases. Also, notice that arrays in expressions turn into pointers in the same way, so function argument passing works the same way as assignment -- a hallmark of pass-by-value. -- [mdw] -- http://mail.python.org/mailman/listinfo/python-list