#include <iostream>

void regular_function(int i)
{
    i=5; // the outside `i' doesn't change, because `i' is a local copy
}

void smart_function(int &i)
{
    i=5; // the outside `i' changes to 5, because `i' is a reference
}

int main()
{
    int var = 10;

    smart_function(var);
    std::cout << var << std::endl;
}
