有没有办法在C中引用你所在的函数?

Kyl*_*iss 5 c function arduino this

我正在编写一个只查找表内值的函数.是否有可能在其内部调用该函数?我已经看过关于它的东西了this,self并且并没有真正理解它.

Hei*_*bug 12

是的你可以.它叫做递归.

void foo(){
   foo(); //This is legal.
}
Run Code Online (Sandbox Code Playgroud)

当然,您需要从中返回以避免无限递归调用.无法返回将导致堆栈溢出.这是一个更好的例子:

void foo(int n){
    if (n == 0)
        return;
    foo(--n);
}
Run Code Online (Sandbox Code Playgroud)

  • 要理解递归,首先必须了解递归. (10认同)
  • 除非`n`最初为零,否则这将永远不会返回.`n - `返回`n`然后递减它.我想你的意思是`--n`. (3认同)

har*_*ari 5

参见递归(计算机科学)(维基百科).

在函数内调用函数的示例:

# include<stdio.h>

int factorial(unsigned int number)
{
    if (number <= 1)
        return 1;
    return number * factorial(number - 1);
}

void main()
{
    int x = 5;
    printf("factorial of %d is %d",x,factorial(x));
}
Run Code Online (Sandbox Code Playgroud)