gpt4 book ai didi

c - C 中使用堆栈内存的递归

转载 作者:行者123 更新时间:2023-11-30 21:36:31 24 4
gpt4 key购买 nike

我已经了解了堆栈的外观。我理解函数的参数将首先被推送,然后是返回地址,最后是函数的局部变量。

是否可以使用堆栈创建递归函数?

这就是我尝试做的:

void f() {
int x = 2;
printf("hey\n");
void (*p)() = (void (*)()) ((&x) - sizeof(x));
p();
}

最佳答案

int func (int x)
{返回(func(x-1);}
这是使用堆栈的递归函数。

  1. 一切都在堆栈上(或者可能在寄存器中),除非您分配内存。

上面的函数没有分配任何内存(并且肯定会导致堆栈溢出)。

  • 你的第 4 行不仅仅是 UB,更是一派胡言。您从指向 X 的指针中减去一些字节,然后认为可能存在一个函数。肯定会导致段错误。
  • 关于c - C 中使用堆栈内存的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49456608/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com