在引用函数中使用的参数 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();
}
我很困惑我要在我的函数中放入什么样的变量: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();
}