将功能与"int main"问题分开(初学者)

Seperating a Funciton From "int main" Issues (Beginner)

本文关键字:初学者 main 功能 int 问题      更新时间:2023-10-16

在被称为主函数的函数中用作参数时,如何正确地获得要更新的变量?

#include "iostream"
int getUserNumber (int input) {
std::cout << "Please input an integer: ";
std::cin >> input;
return input;
}
int main () {
std::cout << "testing getUserNumber functionn";
int a = 104;
getUserNumber(a);
std::cout << "n" << a << "n";
return 0;
}

每当我打印"a"来测试值时,它并不等于控制台中输入的值,只返回它最初等于的值104。我正在寻找"a",通过使用getUserNumber从输入的整数(如"6")更新。感谢您审阅我的代码。

您可以使用返回的int.

像。。

int getUserNumber () {
int input;
std::cout << "Please input an integer: ";
std::cin >> input;
return input;
}
in main() { 
...
int a = getUserNumber();
...
}
#include "iostream"
int getUserNumber () {
int input;
std::cout << "Please input an integer: ";
std::cin >> input;
return input;
}
int main () {
std::cout << "testing getUserNumber functionn";
int a = getUserNumber();
std::cout << "n" << a << "n";
return 0;
}

链接的重复问题确实解释了为什么它会以这种方式工作。它们在技术上是正确的,但可能有点让人不知所措。让我试着解释一下。

在设计一个函数时,你必须问自己以下问题

  1. 函数需要调用方提供什么?调用者是调用函数,即main
  2. 函数返回什么

例如,考虑一个名为printANumber的函数

  1. 它需要知道要打印什么
  2. 它没有任何东西可以返回给它的调用者(main函数)

因此,签名是

void printANumber(int number) // void here means nothing.

现在,getUserNumber

  1. 不需要来自调用者的任何东西(它通过控制台从用户那里获得号码。而不是通过主函数)。所以它不应该有任何参数
  2. 它应该把从用户那里得到的数字反馈给主功能,主功能可以用它做任何事情。比如打印、添加、保存等等

所以签名应该是:

int getUserNumber()

若函数需要一些东西并返回一些东西,那个么就有参数和返回值。例如

int add(int number1, int number2) // return value is the sum of both numbers