c语言中关于函数通道口地址的指针变量

c语言中关于函数入口地址的指针变量?
请教高手:函数入口地址在程序运行过程中是固定的还是会变化的?举个例子,定义了某个函数的入口地址的指针变量,并且一开始就获得了该函数的入口地址,然后该函数就进入了一个递归过程,在递归过程中能否用之前的函数入口指针来指向该函数?



------解决方案--------------------
编译器编译后的函数地址不会动,不过嘛,问题不是绝对的,想自己new一个buf,自己写一段shellcode这样就有可能变化了

------解决方案--------------------
根据编译原理来,程序编译链接完成后,函数的相对位置就已经设置好的。
------解决方案--------------------
C/C++ code

#include <stdio.h>

int fn(int n)
{
        printf("%p %p\n", &n, fn);
        if(n == 1)
                return 1;
        else
                return n * fn(n - 1);
}

int main(void)
{
        int n;
        scanf("%d", &n);

        printf("%d\n", fn(n));
        return 0;
}

------解决方案--------------------
应该不会变,如果变的话回调函数机制就没有意义了