[QUOTE]\n(snip on call by reference, or not)\n[QUOTE]\nAssignment to i resulting in changing a variable in the caller,\nis a feature of "pass by transparent/invisible reference".[/QUOTE]\n[QUOTE]\n"Pass by explicit/visible reference" requires that a dereferencing\noperator be applied to the reference to designate the caller's object\nfrom which the reference was obtained.[/QUOTE]\n\nSo, the C  operator is a visible dereference operator, but\nthe Fortran () (dummy array subscript) is not?[/QUOTE]\n\nAh, but in the case of arrays being passed around as a pointer\nto the first element, this operator is used everywhere: by the\ncaller and callee alike.\n\nIt is not an operator which is inserted only in the called function\nspecifically to dereference the parameter.\n\nArrays in fact look like "pass by invisible reference". The invisibility comes\nfrom the implicit array-to-pointer decay, and the way the array subscript works\non the reference just as well as on the array (so much so that all array\nsubscripting itself is defined that way). And further assisting the invisiblity\nis that we can declare the function parameter using array syntax.\n\nWe call a function, giving the array as an argument: func(array).\nIn the function, we use the parameter as an array with subscripting,\nand assignments to the element change the caller's array object.\n\nIt quacks almost like a duck, just with a slight goosey accent.\n[QUOTE]\nBut C is different from Fortran in the need for * (or )\non scalar arguments.[/QUOTE]\n\nOr the non-scalar argument case of an array being passed using a "pointer to\narray"!