Chamar por referência, valor e nome
Estou tentando entender a diferença conceitual entre chamada por referência, valor e nome.
Então eu tenho o seguinte pseudocódigo:
foo(a, b, c)
{
b =b++;
a = a++;
c = a + b*10
}
X=1;
Y=2;
Z=3;
foo(X, Y+2, Z);
O que é X, Y e Z após a chamada foo se a, b e c forem todos chamados por referência? se a, bec são chamados por valor / resultado? se a, bec são chamados pelo nome?
Outro cenário:
X=1;
Y=2;
Z=3;
foo(X, Y+2, X);
Estou tentando começar a estudar para a próxima final e isso parece um bom problema de revisão. O pass-by-name é definitivamente o mais estranho para mim.