提问者:小点点

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


我得到了一个函数,但我不能定义任何内部变量和全局变量。 此函数从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个答案

匿名用户

这就是你要找的吗?

#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;
}

匿名用户

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

匿名用户

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

bool namefunc(char* cName){ 
//function
}