Re: technology discussion → does the world need a "new" C ?

Liste des GroupesRevenir à l c 
Sujet : Re: technology discussion → does the world need a "new" C ?
De : bc (at) *nospam* freeuk.com (Bart)
Groupes : comp.lang.c
Date : 15. Aug 2024, 13:48:25
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v9ktep$v5sk$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
User-Agent : Mozilla Thunderbird
On 15/08/2024 09:43, Tim Rentsch wrote:
 > Bart <bc@freeuk.com> writes:
 >
 > [on comparing array arguments in C with call-by-reference]
 >
 >> [...] the differences [between C rules and true call-by-reference]
 >> can be summarised here;  [...]
 >>
 >>                                   Call     Array access in callee
 >>
 >>      C call-by-value              F(A)     A[i]
 >>
 >>      true call-by-reference       H(A)     A[i]
 >>
 >> What the user has to write is what's important, and here it is clear
 >> that they write the same thing [in the two cases shown].
 >
 >
 > The comparison above is misleading because it is incomplete.
 > Let's compare the two modes more fully:
 >
 >
 >                          C call-by-value         call-by-reference
 >                          ===============         =================
 >    at call:
 >
 >      (array argument)    F(A)                    H(A)
 >
 >      (pointer argument)  F(p)                    (disallowed)
My posts were about passing *arrays* and the fact that C's pass-by-value was remarkably similar to pass-by-reference.
However your entry for pointers is not correct: you can pass pointers by reference (in C, it means passing a T** type instead of T* to emulate that).
 >
 >      (null argument)     F(0)                    (disallowed)
Pass-by-reference necessarily requires an lvalue at the call-site since it effectively applies & to the argument.
 >
 >    inside function:
 >
 >      (access)            A[i]                    A[i]
 >
 >      (update)            A[i] = ...              A[i] = ...
 >
 >      sizeof A            (pointer size)          (array size)
That's one of the small differences. But you only get the array size in a language where the array type includes its length. Otherwise, you only get it if it's part of the parameter type.
 >      A++                 (changes A variable)    (disallowed)
(In my language ++A is allowed. I'm not sure why, it's likely a bug.)
 >      A = (new value)     (changes A variable)    (disallowed)
This is allowed too in my language, if the array has a fixed size. It reassigns the whole array.
In C you can't do A = B for other reasons, since arrays aren't manipulated by value. But you can do this:
     memcpy(A, B, n);
and it will overwrite caller's array with B. That other language can also choose to call memcpy().
 > The more complete comparion illustrate why C semantics should not
 > be thought of as call-by-reference.
It was made clear more than once that it wasn't exact call-by-reference.
It was also made clear that there were enough similarities that adding real call-by-reference arrays to C would buy you very little.

Date Sujet#  Auteur
5 Jul 24 * Re: technology discussion → does the world need a "new" C ?305BGB
5 Jul 24 +* Re: technology discussion → does the world need a "new" C ?2Lawrence D'Oliveiro
5 Jul 24 i`- Re: technology discussion → does the world need a "new" C ?1yeti
15 Jul 25 +- 
5 Jul 24 `* Re: technology discussion → does the world need a "new" C ?26bart
5 Jul 24  +- Re: technology discussion → does the world need a "new" C ?1BGB
6 Jul 24  `* Re: technology discussion → does the world need a "new" C ?24Lawrence D'Oliveiro
6 Jul 24   +* Re: technology discussion → does the world need a "new" C ?17Keith Thompson
6 Jul 24   i+- Re: technology discussion → does the world need a "new" C ?1Janis Papanagnou
6 Jul 24   i`* Re: technology discussion → does the world need a "new" C ?15Lawrence D'Oliveiro
6 Jul 24   i +- Re: technology discussion → does the world need a "new" C ?1Ben Bacarisse
6 Jul 24   i +- Re: technology discussion → does the world need a "new" C ?1Keith Thompson
7 Jul 24   i +* Re: technology discussion → does the world need a "new" C ?10James Kuyper
10 Jul 24   i i`* Re: technology discussion → does the world need a "new" C ?9Lawrence D'Oliveiro
10 Jul 24   i i `* Re: technology discussion → does the world need a "new" C ?8James Kuyper
11 Jul 24   i i  `* Re: technology discussion → does the world need a "new" C ?7Lawrence D'Oliveiro
11 Jul 24   i i   +* Re: technology discussion → does the world need a "new" C ?2David Brown
11 Jul 24   i i   i`- Re: technology discussion → does the world need a "new" C ?1Malcolm McLean
11 Jul 24   i i   +* Re: technology discussion → does the world need a "new" C ?3bart
11 Jul 24   i i   i`* Re: technology discussion → does the world need a "new" C ?2Chris M. Thomasson
12 Jul 24   i i   i `- Re: technology discussion → does the world need a "new" C ?1Chris M. Thomasson
11 Jul 24   i i   `- Re: technology discussion → does the world need a "new" C ?1James Kuyper
7 Jul 24   i +- Re: technology discussion → does the world need a "new" C ?1Tim Rentsch
25 Aug 24   i `- Re: technology discussion ? does the world need a "new" C ?1dave thompson 2
6 Jul 24   +- Re: technology discussion → does the world need a "new" C ?1Janis Papanagnou
6 Jul 24   +- Re: technology discussion → does the world need a "new" C ?1James Kuyper
6 Jul 24   `* Re: technology discussion → does the world need a "new" C ?4bart
7 Jul 24    `* Re: technology discussion → does the world need a "new" C ?3Keith Thompson
7 Jul 24     `* Re: technology discussion → does the world need a "new" C ?2bart
7 Jul 24      `- Re: technology discussion → does the world need a "new" C ?1Keith Thompson

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal