On Sun, 26 Mar 2023 23:18:49 +0000, Frank Swarbrick wrote:
>True, but "passing by reference" and "passing a 'reference' (pointer/address)
>by value" are the same.
>
No. When "passing a 'reference' (pointer/address) by value" the called
subroutine
receives a *modifiable* pointer/address value.
When "passing by reference" (supported by Pascal but not by C) the called
routine
receives no such value.
>In COBOL, for example, the following end up doing the same thing.
>
Do not use CO BOL as an exemplar of programming discipline. Cobol rots the
brain.
>call 'myfunc' using by reference my-field
>call 'myfunc' using by value address of my-field
>
In the first case, what is the *modifiable* pointer/address object? Does it
have a name?
>Both are the same as doing the following in C:
>myfunc(&my_field)
>
Given suitable preceding declarations, I can do (untested):
myfunc(&my_field) {
my_field = your_field;
...
};
A tested example:
#include <stdio.h>
int scanit( char *S ) {
for ( ; *S; ++S ) { /* "++S modifies a pointer value. */
printf( "%c\n", *S );
};
return 0; };
int main( void ) {
return scanit( "Hello, world!" );
};
1192 $ make tinyc
cc tinyc.c -o tinyc
1193 $ ./tinyc
H
e
l
...
--
gil
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN