向C中的函数解释变量声明

时间:2014-03-07 06:25:08

标签: c++ c gcc recursion cc

以下代码用于计算(base ^ pow)%mod

任何人都可以向我解释以下代码,该代码涉及向函数声明变量,我想知道函数赋给变量的值以及它是如何实现的。

int tmp = mypow( base, pow >> 1, mod );

整个代码:

#include<stdio.h>

int mypow( int base, int pow, int mod )
{
    if( pow == 0 ) return 1;
    if( pow % 2 == 0 ){
        int tmp = mypow( base, pow >> 1, mod );
    printf("\n\n%d\n\n",tmp);
        return tmp * tmp % mod;
    }
    else{
        return base * mypow( base, pow - 1, mod ) % mod;
    }
}

int main(){
    printf("\n\n%d\n\n", mypow(25,20,22));
    return 0;
}

3 个答案:

答案 0 :(得分:2)

该函数将使用给定的参数执行,然后它将return()处理后的值。然后,此值将分配给var

int tmp = mypow( base, pow >> 1, mod );

这一行是函数递归实现的一部分。

答案 1 :(得分:1)

int tmp = mypow( base, pow >> 1, mod );

这定义了一个名为tmp的变量,并将其初始化为函数调用mypow( base, pow >> 1, mod )返回的值。

答案 2 :(得分:0)

它不被称为函数的变量声明,也许是传递给函数的参数。

因此,当您尝试将函数调用为mypow(25,20,22)时,这三个实际的args将作为正式参数传递给callee。在C中,您总是通过引用方法调用args。