Deutsch   English   Français   Italiano  
<v6mm02$21cpb$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.nobody.at!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 20:04:35 +0100
Organization: A noiseless patient Spider
Lines: 53
Message-ID: <v6mm02$21cpb$1@dont-email.me>
References: <v66eci$2qeee$1@dont-email.me> <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>
 <v6m716$1urj4$1@dont-email.me> <86ikxd8czu.fsf@linuxsc.com>
 <v6mggd$20g3f$1@dont-email.me> <20240710213910.00000afd@yahoo.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 10 Jul 2024 21:04:35 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="ded9e1848a26cfa2c70264cde0490f0f";
	logging-data="2143019"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+Ki/Ek3/aXQkabDZHy00g8"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:H8N1yHgwY1VrzhOQQX4F1AYy0bw=
In-Reply-To: <20240710213910.00000afd@yahoo.com>
Content-Language: en-GB
Bytes: 4041

On 10/07/2024 19:39, Michael S wrote:
> On Wed, 10 Jul 2024 18:30:54 +0100
> bart <bc@freeuk.com> wrote:
> 
>> On 10/07/2024 16:48, Tim Rentsch wrote:
>>> bart <bc@freeuk.com> writes:
>>>    
>>>> 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?!"
>>>
>>> They aren't.  C allows lots of things to be passed as an argument
>>> to a function:  several varieties of numeric values, structs,
>>> unions, and pointers, including both pointers to object types and
>>> pointers to function types.  C does not have a way for a function
>>> to take an argument that is either an array or a function.  There
>>> is a way to take pointers to those things, but not the things
>>> themselves.  Arrays and functions are second-class values in C.
>>
>> That's a good point. It's not just arrays that can't be passed by
>> value (because the language says so) but also functions (because its
>> not meaningful).
>>
>> Yet, although pointers to arrays and function can be passed (without
>> even doing anything special like using &), you are not allowed to say
>> that anything is passed by reference in C!
>>
>> The automatic conversion to a pointer, which is also a feature of
>> true pass-by-reference, doesn't count.
>>
>> Not needing an explicit deref inside the callee (another
>> characteristic of pass-by-reference) doesn't count either.
> 
> It does not count, because automatic conversion to a pointer is not
> something that happens only during parameter passing. For arrays, it
> happens in all contexts except sizeof(). For functions, it happens in
> all contexts except function call. Or, may be, including function call,
> in this case (but not in case of arrays) it depends on point of view.
> 

Suppose that was to happen in all contexts, not just for arrays and 
functions, but for all types.

That means that if A, B, C were numbers, then any call such as F(A, B, 
C) would pass the addresses of the numbers rather than their values.

According to what people have said, C would STILL be a language that 
passed thing by value, and never by automatic reference.

Yet in my scenario that now sounds ludicrous.