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

如何在函数中使用主变量?

弘兴言
2023-03-14

我得到了一个函数,但我不能定义任何内部变量和全局变量。 此函数从User获取一个char值。 我需要将此值定义为main函数。 我怎么能做到呢? 谢谢你帮了别人。

编辑:这是我的代码伙计们。 我这样做了,我在全局中定义变量,但我只需要在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;
}

共有3个答案

桂坚
2023-03-14

如果您在main中初始化变量并将其作为参数传递给函数,那么这个问题就会得到解决。

bool namefunc(char* cName){ 
//function
}
袁智明
2023-03-14

您可以将对变量的引用传递给函数。 由于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::strings并通过引用函数传递它们。

皇甫建木
2023-03-14

这就是你要找的吗?

#include <iostream>

using namespace std;

bool nameFunc(char* cName) {

    cout << "Whats Your Name ?\n";
    cin >> cName;
    if (cName != NULL && cName[0] == '\0') {
        return false;
    }
    else {
        return true;
    }
}

bool surnameFunc(char* cSurname) {
    cout << "Whats Your Surname ?\n";
    cin >> cSurname;
    if (cSurname != NULL && cSurname[0] == '\0') {
        return false;
    }
    else {
        return true;
    }
}

int main() {
    char cName[255], cSurname[255];
    if (nameFunc(cName) and surnameFunc(cSurname)) {
        cout << "Hello, " << cName << " " << cSurname << "." << endl;
    }
    else {
        cout << "Error! Name or Surname is empty." << endl;
    }
    system("PAUSE");
    return 0;
}
 类似资料:
  • 问题内容: 如何在python函数中设置全局变量? 问题答案: 要在函数内部使用变量,您需要像这样在函数内部进行操作。 给出输出 请记住,如果您要进行分配/更改它们,则只需要在函数内声明它们。打印和访问不需要。 你可以做, 而不像我们在第一个函数中那样声明它,它仍然可以正确赋值。 以a为例,您不能在不声明的情况下分配a ,但是可以调用它的方法并更改列表。如下所示。

  • 我遇到了这个问题: 预期产出: 注二: > 我不能修改main或它之前的任何内容。我只能修改函数,其中的代码是我自己的代码。 我无法获得所需的输出–我的代码只在子程序中输出,但在主程序中不更改它。 我如何更改主例程中的值?请记住,我是C语言的新手,还不知道很多事情(事实上,我昨天刚刚讨论了指针)。

  • 我目前正在阅读React官方网站,在那里我遇到了这个问题。React官方网站声明我们可以在JSX中使用函数代码。因此,我尝试了以下代码,但不起作用。 ABCD类扩展了React。组件{ } 我知道,我知道,你们中的一些人可能会说,看看React网站上给出的例子。我看到了,官网上的例子涉及到外部功能。我只是想知道我们能否独立使用JSX内部的函数。 有关更多信息,请参阅此链接:https://reac

  • 具有以下示例JNLP: (请忽略格式或其他不一致的地方--唯一重要的部分是参数部分) 如果变量db_port位于argument标记中,那么在使用JavaWS执行jnlp时,是否有方法将值传递给该变量? 例如:javaws/path/to/sample.jnlp 31022 编辑: JNLP将JAR下载到位于AppData\locallo\sun\java\deployment\cache下的缓存

  • 问题内容: 如何在函数中创建或使用全局变量? 如果在一个函数中创建全局变量,如何在另一个函数中使用该全局变量?我是否需要将全局变量存储在需要对其进行访问的函数的局部变量中? 问题答案: 你可以在其他函数中使用全局变量,方法是像在分配给它的每个函数中一样声明它: 我想这是因为全局变量是如此危险,因此Python希望通过显式要求使用关键字来确保您真正知道这就是要使用的内容。

  • 问题内容: 我正在用Java执行一个项目,该项目具有在数据库中添加文件的功能,并且我想使用winapi函数来选择文件。我该怎么办? 问题答案: 到目前为止,最简单的方法是使用Java JNA,它已经具有stcalls的翻译功能。 您可以在JavaWorld上找到它的基础教程(至少有Winapi示例)。 您也可以使用JNI,但是JNI要求您使用专门构建的头文件进行接口连接,而这一切都很难维护和使用。

  • 问题内容: 因此,在我正在编写的此程序中,我实际上是使用表单从用户那里获取SQL查询。然后,我继续在数据库上运行该查询。 我知道不要“信任”用户输入,因此我想对输入进行清理。我正在尝试使用,但未能成功使用。 输入以下内容,这就是我要尝试的内容: 这总是给我 “输入无效!” 错误。 当我取出零件并仅对查询运行时, “输入无效” 不输出信息。相反,当我这样做时: 它不输出 “输入无效”。 但是,我需要

  • 问题内容: 我不知道如何在JavaScript中使用多个ID。单个ID和getElementById没问题,但是一旦我将ID更改为class并尝试使用getElementsByClassName,该函数就会停止工作。我已经读了约100条关于该主题的文章;仍然没有找到答案,所以我希望这里的人知道如何使getElementsByClassName工作。 这是我用于测试的一些简单代码: 问题答案: 返回