Deutsch English Français Italiano |
<87r0c1nzjj.fsf@bsb.me.uk> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Ben Bacarisse <ben@bsb.me.uk> Newsgroups: comp.lang.c Subject: Re: technology discussion =?utf-8?Q?=E2=86=92?= does the world need a "new" C ? Date: Wed, 10 Jul 2024 14:32:00 +0100 Organization: A noiseless patient Spider Lines: 51 Message-ID: <87r0c1nzjj.fsf@bsb.me.uk> 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> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Wed, 10 Jul 2024 15:32:00 +0200 (CEST) Injection-Info: dont-email.me; posting-host="4de7691f4ab8416481d0de19b6a8d938"; logging-data="2035642"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+2fMe017SAvYdHf1D8VHA3w7sP9DZzRIs=" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:ZJOP2LRGLNtCarbgcAZe/ERrmAw= sha1:VULtFQV5nbMx74BAfeiYpjriV2I= X-BSB-Auth: 1.458b0cd055d614fb8f41.20240710143200BST.87r0c1nzjj.fsf@bsb.me.uk Bytes: 3531 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 and complicate by pretending that C as pass by reference as well as by value. -- Ben.