Llamar por referencia, valor y nombre

Estoy tratando de entender la diferencia conceptual entre la llamada por referencia, el valor y el nombre.

Así que tengo el siguiente 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);

¿Qué es X, Y y Z después de la llamada foo si a, b y c son llamadas por referencia? si a, b, yc son llamada por valor / resultado? si a, b, y c son llamada por nombre?

Otro escenario:

X=1;
Y=2;
Z=3;
foo(X, Y+2, X);

Estoy tratando de obtener una ventaja en el estudio para una próxima final y esto parece ser un buen problema de revisión para repasar. El paso por nombre es definitivamente el más extraño para mí.

Respuestas a la pregunta(5)

Su respuesta a la pregunta