Deutsch English Français Italiano |
<v6m716$1urj4$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: bart <bc@freeuk.com> Newsgroups: comp.lang.c Subject: =?UTF-8?Q?Re=3A_technology_discussion_=E2=86=92_does_the_world_need?= =?UTF-8?B?IGEgIm5ldyIgQyA/?= Date: Wed, 10 Jul 2024 15:49:11 +0100 Organization: A noiseless patient Spider Lines: 65 Message-ID: <v6m716$1urj4$1@dont-email.me> References: <v66eci$2qeee$1@dont-email.me> <v68dsm$37sg2$1@dont-email.me> <87wmlzvfqp.fsf@nosuchdomain.example.com> <v6ard1$3ngh6$4@dont-email.me> <v6b0jv$3nnt6$1@dont-email.me> <87h6d2uox5.fsf@nosuchdomain.example.com> <v6d779$6rk5$2@dont-email.me> <v6e76u$c0i9$1@dont-email.me> <v6esqm$fian$2@dont-email.me> <v6f7vg$hgam$1@dont-email.me> <20240707164747.258@kylheku.com> <v6gl83$s72a$1@dont-email.me> <v6h8ao$ur1v$1@dont-email.me> <v6jhk3$1drd6$1@dont-email.me> <v6jiud$1dsjb$1@dont-email.me> <877cdur1z9.fsf@bsb.me.uk> <v6joi4$1epoj$1@dont-email.me> <871q42qy33.fsf@bsb.me.uk> <v6k6i0$1h4d3$1@dont-email.me> <87ed82p28y.fsf@bsb.me.uk> <v6m03l$1tf05$1@dont-email.me> <87r0c1nzjj.fsf@bsb.me.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Wed, 10 Jul 2024 16:49:10 +0200 (CEST) Injection-Info: dont-email.me; posting-host="ded9e1848a26cfa2c70264cde0490f0f"; logging-data="2059876"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+z4v/Pekm5C6Y4R7oSHgZ2" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:hMMco59k+gDXukGAuB5/43YUhVg= Content-Language: en-GB In-Reply-To: <87r0c1nzjj.fsf@bsb.me.uk> Bytes: 4129 On 10/07/2024 14:32, Ben Bacarisse wrote: > bart <bc@freeuk.com> writes: > >> On 10/07/2024 00:35, Ben Bacarisse wrote: >>> bart <bc@freeuk.com> writes: >>> >>>> On 09/07/2024 18:22, Ben Bacarisse wrote: >>>>> bart <bc@freeuk.com> writes: >>>>> >>>>>> On 09/07/2024 16:58, Ben Bacarisse wrote: >>>>>>> bart <bc@freeuk.com> writes: >>>>>>> >>>>>>>> Arrays are passed by reference: >>>>>>>> >>>>>>>> void F(int a[20]) {} >>>>>>>> >>>>>>>> int main(void) { >>>>>>>> int x[20]; >>>>>>>> F(x); >>>>>>>> } >>>>>>> This is the sort of thing that bad tutors say to students so that they >>>>>>> never learn C properly. All parameter passing in C is by value. All of >>>>>>> it. You just have to know (a) what the syntax means and (b) what values >>>>>>> get passed. >>>>>> >>>>>> The end result is that a parameter declared with value-array syntax is >>>>>> passed using a reference rather than by value. >>>>>> >>>>>> And it does so because the language says, not because the ABI requires >>>>>> it. A 2-byte array is also passed by reference. >>>>> An address value is passed by value. C has only one parameter passing >>>>> mechanism. You can spin it as much as you like, but C's parameter >>>>> passing is simple to understand, provided learner tune out voices like >>>>> yours. >>>> >>>> Little about C's type system is simple. >>> Parameter passing is relatively simple though since there is only one >>> mechanism -- pass by value. >> >> Except when it comes to arrays. > > The oddity is that, in C, one can't pass arrays to functions at all. > That is one of the quirks that people learning C need to learn. It does > not alter the fact that there is only parameter passing mechanism -- by > value. > > Your plan, of course, is to take that one place where C is relatively > simple It is not that simple. It is confusing. It is error prone. I earlier asked this: "So if arrays aren't passed by value in C, and they aren't passed by reference, then how the hell ARE they passed?!" I haven't had a reply yet. I still consider arrays in C to be 'passed' by a mechanism which is near-indistinguishable from actual pass-by-reference. If somebody had proposed adding pass-by-reference for arrays, you'd say C doesn't need it, because whatever benefits it might have you, C already has!