当前位置: 首页 > 知识库问答 >
问题:

函数和虚空函数之间的变量是如何相互工作/交互的?

龙景澄
2023-03-14

根据我的理解,函数和void函数可以被调用,并且它们将在其中执行代码。

然而,我不明白括号内的变量的用途。即使少了其中一个,代码也无法运行。然而,似乎您可以为这些变量分配不同的名称,它仍然可以工作。

这些变量是如何相互联系/相互作用的?指:

1.)双倍幂(双基,int指数)

2.)void print_pow(双基,int指数)

3.)print_pow(基数、指数);

#include <iostream>
#include <cmath>

using namespace std;

double power(double base, int exponent)
{ 
    double result = 1;
    for(int i=0; i < exponent; i++)
    {
        result = result * base;
    }
    return result;
}

void print_pow(double base, int exponent)
{
    double myPower = power (base, exponent);
    cout << base << " raised to the " << exponent << " power is " << myPower << ". \n ";
}

int main()
{ 
    double base;
    int exponent;
    cout << "What is the base?: ";
    cin >> base;
    cout << "What is the exponent?: ";
    cin >> exponent;
    print_pow(base, exponent);
}

共有2个答案

岳华灿
2023-03-14

这里应用的命名方案有点不幸。这些变量的名字几乎可以是任何东西,最好花点时间找到好的名字。不过,为了说明它们是不同的实体,我只是把它们变得不同:

 #include<iostream>
#include<cmath>
using namespace std;

double power (double base, int exponent)
{ 
    double result = 1;
    for(int i=0; i < exponent; i++)
    {
        result = result * base;
    }
    return result;
}

void print_pow(double a, int b)
{
    double myPower = power (a, b);
    cout << a << " raised to the " << b << " power is " << myPower << ". \n ";
}

int main()
    { 
        double x;
        int y;
        cout << "What is the base?: ";
        cin >> x;
        cout << "What is the exponent?: ";
        cin >> y;
        print_pow(x, y);
    }

变量是在一定范围内声明的。只有在此范围内,您才能访问该变量。在您的代码中有3不同的变量,称为base。那之间并没有神奇的关系,只是因为他们有相同的名字。它们通过使用参数print_pow(x,y)调用函数来“连接”,参数的名称与函数无关,函数参数的名称与调用者无关(除了提示参数的用途)。

宋伯寅
2023-03-14

想象一下这段代码本身:

double power ()
{ 
    double result = 1;
    for(int i=0; i < exponent; i++)
    {
        result = result * base;
    }
    return result;
}

你能告诉我什么是基数指数以及它们是从哪里来的吗?

答案是否定的。如果你不能说,编译器也不能说。在我的代码中,没有声明baseexponent

这些被称为函数参数。他们完全是他们听起来的样子。可以用数学符号做一个很好的类比:

f(x) = x * 2

括号中是函数的参数

现在考虑一个与您的代码非常相似的代码,但参数的名称发生了更改:

double power(double base, int exponent)
{ 
    double result = 1;
    for(int i=0; i < exponent; i++)
    {
        result = result * base;
    }
    return result;
}

// Name changed!  ----v------v
void print_pow(double b, int e)
{
    double myPower = power(b, e);
    cout << base << " raised to the " << exponent << " power is " << myPower << ". \n ";
}

正如您所看到的,参数可以相互映射,而不依赖于它们的名称。base将取b的值,exponent将取e的值。

函数参数的一个重要性质是它们的作用就像局部变量一样。这种本地实体不受外部实体名称的影响。因此,如果在您的代码中,它们是名为baseexponent的多个变量,它们是不同的实体,因为它们具有不同的作用域。

如果您愿意,可以编写这样的函数:

void print_pow2(double base, int exponent)
{
    double myPower = power(base * 2, 3);
    cout << base << " raised to the " << exponent << " power is " << myPower << ". \n ";
}

正如您所看到的,即使名称相同,baseexponentpower中的值也不会相同。您甚至可以注意到,power中的exponent将与print_power2中的exponent没有关系,因为我发送了常数3

如果我再对数学符号做一个类比:

f(x) = x * 2
g(x) = f(x * 2) / 3

即使gf都具有x作为参数,但x是不同的,并且在每个函数中使用不同的值。

 类似资料:
  • 本文向大家介绍虚函数与纯虚函数之间的区别,包括了虚函数与纯虚函数之间的区别的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解虚拟和纯虚拟功能之间的区别。 虚函数 它在类中有自己的定义。 基类可以覆盖虚拟函数。 它没有派生类。 声明 纯虚函数 没有定义。 如果一个类至少具有一个虚函数,则可以将其声明为抽象。 派生类必须重写纯虚函数才能使用它。 通过在声明中放置“ = 0”来指定纯虚函数

  • 问题内容: 在中,我使用或计算成对互相关函数,以便找出哪个偏移使我获得了最大值。从它的外观来看,给了我一个规范化的值序列。Python的scipy中是否有类似的东西,还是应该使用该模块?目前,我正在执行以下操作: 问题答案: 要使一维数组互相关,请使用numpy.correlate。 对于2d数组,请使用scipy.signal.correlate2d。 还有scipy.stsci.convolv

  • 我们如何一起使用数组和数组列表(如果可能的话)? 我想将一些字符串存储到数组列表中,稍后将它们取出,解析成字符串数组,将这些数组存储在数组列表中,稍后能够从数组列表中检索数据... 查看这段代码,并随意将我拆分为做蹩脚的编码;我已经有一段时间没有使用Java了。 在前面,我已经将一些外部文件转储到< code>nonParsedData中。就是一串弦。没什么大不了的。我取出这些字符串,读取它们,放

  • 本文向大家介绍UIWebView和JavaScript之间是怎么交互的?相关面试题,主要包含被问及UIWebView和JavaScript之间是怎么交互的?时的应答技巧和注意事项,需要的朋友参考一下 UlWebView是i〇S SDK中渲染网面的控件,在显示网页的时候,我们可以hack网页 然后显示想显示的内容。其中就要用至JavaScript的知识,而UlWebView与javascript交互

  • 我有一个包含文本字段(红色、绿色、蓝色)和滑块(红色、绿色、蓝色)的面板。用户应该能够使用他们喜欢的任何组件,相应的组件应该更新。(例如,在红色文本字段中输入100应将红色滑块移动到100)。

  • 本文向大家介绍MySQL中日期和时间戳互相转换的函数和方法,包括了MySQL中日期和时间戳互相转换的函数和方法的使用技巧和注意事项,需要的朋友参考一下 ① 时间戳转换成日期 例如: 数据表中 invest_time 存储的是时间戳,如 1429063399 使用 FROM_UNIXTIME 可以把时间戳转换为日期: 执行结果: ② 把日期转换为时间戳,和 FROM_UNIXTIME 正好相反 例如