我已经了解了堆栈的外观。 我知道函数的参数将首先被推送,而不是返回地址,最后是函数的局部变量。
是否可以使用堆栈创建递归函数?
这就是我试图做的事情:
void f() {
int x = 2;
printf("hey\n");
void (*p)() = (void (*)()) ((&x) - sizeof(x));
p();
}
答案 0 :(得分:1)
int func (int x)
{return (func(x-1);}
这是使用堆栈的递归函数。
上面的函数没有分配任何内存(肯定会导致堆栈溢出)。