c++ - 如何在函数中使用主变量?
问题描述
我有一个函数,但我也无法在内部和全局定义任何变量。此函数从用户那里获取一个 char 值。我需要将此值定义为主要功能。我该怎么做?感谢您的帮助。
这是我的代码。我是这样设计的,但是我在全局中定义了变量,但我只需要在 main 中定义这个变量。
#include <iostream>
using namespace std;
char cName[255], cSurname[255];
bool nameFunc() {
cout << "Whats Your Name ?\n";
cin >> cName;
if (cName != NULL && cName[0] == '\0') {
return false;
}
else {
return true;
}
}
bool surnameFunc() {
cout << "Whats Your Surname ?\n";
cin >> cSurname;
if (cSurname != NULL && cSurname[0] == '\0') {
return false;
}
else {
return true;
}
}
int main() {
if (nameFunc() and surnameFunc()) {
cout << "Hello, " << cName << " " << cSurname << "." << endl;
}
else {
cout << "Error! Name or Surname is empty." << endl;
}
system("PAUSE");
return 0;
}
解决方案
您可以将对变量的引用传递给函数。由于char[]
有一个固定的长度,你需要确保你不会写越界,这会使事情变得复杂。
例子:
#include <iostream>
template<size_t N>
bool nameFunc(char (&cName)[N]) {
std::cout << "Whats Your Name ?\n";
std::cin.getline(cName, N); // read at most N chars
return cName[0] != '\0';
}
template<size_t N>
bool surnameFunc(char (&cSurname)[N]) {
std::cout << "Whats Your Surname ?\n";
std::cin.getline(cSurname, N); // read at most N chars
return cSurname[0] != '\0';
}
int main() {
char cName[255], cSurname[255];
if (nameFunc(cName) and surnameFunc(cSurname)) {
std::cout << "Hello, " << cName << " " << cSurname << ".\n";
}
else {
std::cout << "Error! Name or Surname is empty.\n";
}
}
一个更简单的选择是使用std::string
s 并通过引用函数来传递它们。
推荐阅读
- python-3.x - AttributeError:模块“ClassMolecule”没有属性“save_molecule”
- jquery - 如何在 url 中的第二个斜杠后获取字符串 - 使用 jquery?
- c# - Firebase 值到组合框
- java - 是否可以通过从引用相对路径的 Path 对象调用 getRoot() 来获得正确的根?
- java - 禁用 JavaFX 中的所有父节点,同时保持其所有子节点可点击
- android - 为什么 PreferenceScreen 在 sdk 版本 28 中显示不正确?如何解决?
- c - 头文件后的 GCC 选项 -save-temps 数字
- java - 每次侦听器执行时如何更改面板的图形?
- angularjs - 路由提供者不重定向
- java - 两个整数数组的串联和