c++ - 将结构传递给函数时出现意外结果

标签 c++ pointers struct

我想传递一个结构来实现如下所示的功能(我知道我可以传递单个成员来实现类似 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/

相关文章:

c++ - 二进制和文本模式编写的文件之间的区别

c++ - 在 Linux 32 位上带有基数 36 的 strtoull 溢出 unsigned long long

c++ - 从 BCRYPT_SECRET_HANDLE 将共享 secret 导出为 BYTE 数组

c - 宏返回编译警告中args的定义

c++ - 调用结构中定义的函数时出错

c++ - 如何使用 C++ 保存网页? Windows或Linux系统

c - 取消引用数组中结构中字符串的 C 指针?

c - 在函数参数中传递的数组是否被视为按引用调用?

c++ - 按值传递的变量的拷贝会保留在内存中吗?

gotk3,带有自定义小部件的笔记本附加页面并将其取回