You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中实现函数间变量传递?以半径变量传递为例

解决C++中复用半径值、避免重复调用输入函数的问题

你尝试的引用传递代码的问题

你写的引用版radius函数有两个关键错误:

  1. 函数内部定义了和参数同名的局部变量double radius{};,这会遮蔽外部的引用参数,导致用户输入的值根本无法传递到函数外的变量中。
  2. 修改后的radius函数是带参数的void类型,但原来的circumfrence和area函数仍在调用无参的radius(),编译器找不到这个无参函数,自然会报“标识符未定义”。

正确实现方案(两种可选)

核心思路是:只获取一次半径值,再将这个值传递给需要计算周长、面积的函数,既避免重复输入,又符合函数职责分离的练习要求。

方案1:使用引用传递获取输入

适合练习引用参数的使用:

#include <iostream>

const double pi{3.14};

// 用引用参数接收用户输入的半径,无需返回值
void getRadius(double& radius)
{
    std::cout << "What is the radius of your circle?\n";
    // 直接给引用参数赋值,不要定义同名局部变量
    std::cin >> radius;
}

// 接收半径参数,计算并输出周长
void circumference(double radius)
{
    double circ = 2 * pi * radius;
    std::cout << "The circumference of your circle is " << circ << std::endl;
}

// 接收半径参数,计算并输出面积
void area(double radius)
{
    double ar = pi * radius * radius;
    std::cout << "The area of your circle is " << ar << std::endl;
}

int main()
{
    double radius{};
    // 一次性获取半径值
    getRadius(radius);
    // 将同一个半径值传给两个计算函数
    circumference(radius);
    area(radius);

    return 0;
}

方案2:使用返回值获取输入

更简洁的实现,适合练习函数返回值的使用:

#include <iostream>

const double pi{3.14};

// 获取用户输入并返回半径值
double getRadius()
{
    std::cout << "What is the radius of your circle?\n";
    double radius{};
    std::cin >> radius;
    return radius;
}

void circumference(double radius)
{
    double circ = 2 * pi * radius;
    std::cout << "The circumference of your circle is " << circ << std::endl;
}

void area(double radius)
{
    double ar = pi * radius * radius;
    std::cout << "The area of your circle is " << ar << std::endl;
}

int main()
{
    // 保存一次获取的半径值
    double radius = getRadius();
    circumference(radius);
    area(radius);

    return 0;
}

内容的提问来源于stack exchange,提问作者monki_mayn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:12:20