首页 > 解决方案 > 如何在函数中使用主变量?

问题描述

我有一个函数,但我也无法在内部和全局定义任何变量。此函数从用户那里获取一个 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;
}

标签: c++

解决方案


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


推荐阅读