int a = 5;
→
Вызов: foo(a)
int x = a; // x = 5 (копия)
↓
x = 10; // Меняется только копия
↑
a всё равно = 5