Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <v6kat7$1hcpd$1@dont-email.me>
Deutsch   English   Français   Italiano  
<v6kat7$1hcpd$1@dont-email.me>

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

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: BGB <cr88192@gmail.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: Tue, 9 Jul 2024 16:43:02 -0500
Organization: A noiseless patient Spider
Lines: 62
Message-ID: <v6kat7$1hcpd$1@dont-email.me>
References: <v66eci$2qeee$1@dont-email.me> <v67gt1$2vq6a$2@dont-email.me>
 <v687h2$36i6p$1@dont-email.me> <871q48w98e.fsf@nosuchdomain.example.com>
 <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> <v6k13q$1g7uk$1@dont-email.me>
 <v6k66h$1g2d7$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 09 Jul 2024 23:43:03 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="05b7ca2b320d2b6fc0402746ff5c99a9";
	logging-data="1618733"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/ch1JUzj9vP5MuclUo9UclkVQaSinz1gQ="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:6kFhQ2x4/hRQ1xKYDUCAV/t0fIE=
In-Reply-To: <v6k66h$1g2d7$1@dont-email.me>
Content-Language: en-US
Bytes: 3669

On 7/9/2024 3:22 PM, James Kuyper wrote:
> On 7/9/24 14:55, BGB wrote:
> ...
>> The pass by reference, in this context, was referring to the ABI, not
>> to C itself.
>>
>> It looks from C's POV as-if it were by-value.
>>
>>
>> Which it is, depends on if one is looking at things at the language
>> level, ABI level, or IR level, ...
> 
> The C standard doesn't explicitly specify pass by value, or pass by
> reference, or anything other passing mechanism. What it does say is what
> a programmer needs to know to use the passing mechanism. It says that
> the value of a function parameter that is seen by the code inside that
> function is a copy of the value passed as an argument to the function.
> The copy can be modified without changing the original. When a C
> function's declaration looks as though it takes an array as an argument,
> what that declaration actually means is that it takes a pointer value as
> an argument, and it is a copy of that pointer's value which is seen
> inside the function, and can be modified. The memory it points at is the
> same as the memory pointed at by the corresponding argument.
> 
> 


We can probably agree that, in C:
   typedef struct Foo_s Foo;
   struct Foo_s {
     int x, y, z, a, b, c;
   };

   int FooFunc(Foo obj)
   {
     obj.z = obj.x + obj.y;
     return(obj.z);
   }

   int main()
   {
     Foo obj;
     int z1;
     obj.x=3;
     obj.y=4;
     obj.z=0;
     z1=FooFunc(obj);
     printf("%d %d\n", obj.z, z1);
   }

Should print "0 7" regardless of how the structure is passed in the ABI.


Though, one possibility being to relax the language such that both "0 7" 
and "7 7" are valid possibilities (the latter potentially allowing more 
performance by not needing to make a temporary local copy). Though, 
AFAIK, C doesn't really allow for this.

An implementation could be clever though and only make local copies in 
cases where the structure is modified by the callee, as in the example 
above.