Sujet : Re: technology discussion → does the world need a "new" C ?
De : Keith.S.Thompson+u (at) *nospam* gmail.com (Keith Thompson)
Groupes : comp.lang.cDate : 12. Jul 2024, 17:54:46
Autres entêtes
Organisation : None to speak of
Message-ID : <87sewesg89.fsf@nosuchdomain.example.com>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
User-Agent : Gnus/5.13 (Gnus v5.13)
Kaz Kylheku <
643-408-1753@kylheku.com> writes:
On 2024-07-12, bart <bc@freeuk.com> wrote:
It's clearly not by value. It's apparently not by reference. You can't
get away with saying they are not passed, as clearly functions *can*
access array data via parameters.
>
Actually, you probably can get away with saying that it is "passed
by reference".
>
The formal term that doesn't apply is "call by reference"; that's what
C doesn't have.
>
"call by reference" emphasizes that the function call mechanism
provides the reference semantics for a formal parameter, not that some
arbitrary means of passage of the data has reference semantics.
[...]
I know that "call by reference" is the usual formal term, but I
personally prefer "pass by reference".
The terms "call by reference" and "call by value" emphasize the call,
implying that all arguments in a given call are passed with the same
mechanism. In some languages that's true (C argument passing is purely
by value, and Fortran, as I understand it, is purely by reference), but
in others (C++, Pascal, Ada) you can select by-value or by-reference for
each parameter. "Pass by (reference|value)" feels more precise.
I haven't checked, but I suspect the terms "call by (reference|value)"
predate languages that allowed the mechanism to be specified for each
parameter.
-- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.comvoid Void(void) { Void(); } /* The recursive call of the void */