скрытое меню

как выполняется функция

Вот простой пример показывающий наглядно, что как выполняется функция:
Рекурсивно вызываем 3 раза одну и ту же функцию fff .

int y=0;
int fff(int &i)
{
    printf("...&fff=%p \n",&fff);
    printf("...i=%i  &i=%p\n",i,&i);
    if(i<3)
    {
        i++;
        fff(i);
    }

    return i++;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    int ii=1;
    int res=fff(ii);

Вывод:

...&fff=004013B0 
......i=1  &i=0028FF20
...&fff=004013B0 
......i=2  &i=0028FF20
...&fff=004013B0 
......i=3  &i=0028FF20

Ошибочные фразы, которые я слышал:
1. функция при выполнении загружается в стек - по-моему фигня , т.к. адрес функции стабильно равен 004013B0. Сама функция в стек не загружается. В стек только сохраняется текущая позиция кода до выполнения функции и еще параметры , которые передаются в функцию.

По-моему получается , что при вызове функции:
1. просто сохраняем в стек текущую позицию кода
2. просто переходим на адрес , где находится функция
3. выполняем ее
4. выходим из функции , т.е. просто вытаскиваем из стека сохраненную позицию кода до вызова фукции и продолжаем выполнение дальше.