24/06/25 13:28:25.30 PJlEmYUO.net
>>741
で、C言語だとこんな感じかと想像するが、
変数 xの値である 1 を渡すことを、値渡し、
変数 xのポインタである 0x7ffed3b1f5ac を渡すことを、参照渡しと呼んでいた。
$ cat x.c
#include <stdio.h>
void modify(int *xx, int *yy) {
printf("xx %p %d\n", xx, *xx);
printf("yy %p %d\n", yy, *yy);
int new_xx = 0;
xx = &new_xx; /* 代入により別オブジェクトを指すPython風 */
*yy = 0; /* 変更結果が返される。 */
printf("xx %p %d\n", xx, *xx);
printf("yy %p %d\n", yy, *yy);
return;
}
int main(void) {
int x = 1;
int y = 11;
modify(&x, &y);
printf("x %p %d\n", &x, x);
printf("y %p %d\n", &y, y);
return 0;
}
$ cc x.c && ./a.out
xx 0x7ffed3b1f5ac 1
yy 0x7ffed3b1f5a8 11
xx 0x7ffed3b1f58c 0
yy 0x7ffed3b1f5a8 0
x 0x7ffed3b1f5ac 1
y 0x7ffed3b1f5a8 0