用 C 语言向函数解释变量声明

Posted

技术标签:

【中文标题】用 C 语言向函数解释变量声明【英文标题】:Explain variable declaration to a function in C 【发布时间】:2014-03-07 06:25:08 【问题描述】:

以下代码是计算(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;

【问题讨论】:

这是一个带有初始化的普通变量声明。它与例如没有什么不同。 int tmp = 5;,只是初始化表达式是函数调用。 这是here描述的递归算法的实现。 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:
int tmp = mypow( base, pow >> 1, mod );

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于用 C 语言向函数解释变量声明的主要内容,如果未能解决你的问题,请参考以下文章

c语言怎样声明和定义全局变量

C语言的三十二个关键字,和九种控制句是啥?

C语言变量的定义和声明有啥不同?

在C语言中声明和定义的区别?

求C++中auto型的详细解释

C语言关键字大全