在引用函数中使用的参数 c++

Parameters to use in a referenced function c++

我很困惑我要在我的函数中放入什么样的变量:names。我正在做一本 C++ 书中的练习题,因为我正在学习 C++,现在正在参考和指针上,找不到解决方案。

只是为了背景信息,问题问:

Write a function that prompts the user to enter his or her first name and last name, as two separate values.
This function should return both values to the caller via additional pointer(or reference) parameters that are passed to the function.
Try doing this first with pointers and then with references.

#include <iostream>
#include <string>
#include <istream>

using namespace std;

struct someStruct{
    string firstname;
    string lastname;
};

void names(someStruct &firstname, someStruct &lastname) {
    cout << "First Name: " << "\n";
    cin >> firstname.firstname;
    cout << "Last Name: " << "\n";
    cin >> lastname.lastname;
    // I was just curious is adding firstname to firstname would work... and     it did
    cout << lastname.lastname << ", " << firstname.firstname;
    cin.get();
}

int main() {
    names();
    // I don't know what to put here, above, as parameters
    cin.get();
}

您的代码毫无意义,为什么要传递 someStruct 两次?

对于 reference 部分,你应该有这样的东西:

void names(someStruct &s) { // <<<< Pass struct once as a reference
    cout << "First Name: " << "\n";
    cin >> s.firstname;
    cout << "Last Name: " << "\n";
    cin >> s.lastname;
}

并在 main() 中:

int main() {
    someStruct x; // <<<< Create an instance of someStruct
    names(x); // <<<< Pass it as parameter

    cout << "Input was: firstName = " << x.firstname 
         << ", lastName = " << x.lastname 
         << endl;
    cin.get();
}

对于 pointer 部分,你应该有这样的东西:

void names(someStruct *s) { // <<<< Pass struct once as a reference
    cout << "First Name: " << "\n";
    cin >> s->firstname;
         // ^^ Note the difference in dereferencing
    cout << "Last Name: " << "\n";
    cin >> s->lastname;
         // ^^ Note the difference in dereferencing
}

并在 main() 中:

int main() {
    someStruct x; // <<<< Create an instance of someStruct
    names(&x); // <<<< Pass the address of x as parameter
       // ^ Note the addess-of operator here

    cout << "Input was: firstName = " << x.firstname 
         << ", lastName = " << x.lastname 
         << endl;
    cin.get();
}