我想传递一个结构来实现如下所示的功能(我知道我可以传递单个成员来实现类似 input(int age, string s) 的功能,但我想传递整个结构,如 input(student s) )
#include <iostream>
using namespace std;
struct student
{
string name;
int age;
};
void input(student s)
{
cout << "Enter Name: ";
cin >> s.name;
cout << "Enter age: ";
cin >> s.age;
}
int main(int argc, char *argv[]) {
struct student s1;
input(s1);
cout << "Name is: " << s1.name << endl;
cout << "Age is: " << s1.age << endl;
}
上面的代码没有产生正确的输出,我想将上面的代码与指针一起使用以获得预期的输出。
测试:如果我将姓名输入“abc”并将年龄输入为 10。它不会在 main 中打印
最佳答案
您的函数制作输入的本地拷贝。看起来您需要通过引用传递:
void input(student& s) { .... }
// ^
默认情况下,函数参数是按值传递的,因此这个问题并不特定于类。例如,
void increment_not(int i) { ++i; }
int i = 41;
increment_not(i);
std::cout << i << std::endl; // prints 41
关于c++ - 将结构传递给函数时出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18779051/