C++ 结构体和函数

在本文中,您将找到将结构体作为参数传递给函数并在您的程序中使用它们的相关示例。

结构体变量可以像普通参数那样传递给函数并,也可以作为函数的返回值。

将结构体传递给 C++ 中的函数

结构体变量可以以与普通参数类似的方式传递给函数。请看这个例子:

示例 1:C++ 结构体和函数

#include <iostream>
using namespace std;

struct Person {
    char name[50];
    int age;
    float salary;
};

void displayData(Person);   // Function declaration

int main() {
    Person p;

    cout << "Enter Full name: ";
    cin.get(p.name, 50);
    cout << "Enter age: ";
    cin >> p.age;
    cout << "Enter salary: ";
    cin >> p.salary;

    // Function call with structure variable as an argument
    displayData(p);

    return 0;
}

void displayData(Person p) {
    cout << "\nDisplaying Information." << endl;
    cout << "Name: " << p.name << endl;
    cout <<"Age: " << p.age << endl;
    cout << "Salary: " << p.salary;
}

输出

Enter Full name: Bill Jobs
Enter age: 55
Enter salary: 34233.4

Displaying Information.
Name: Bill Jobs
Age: 55
Salary: 34233.4

在这个程序的 main() 函数中,用户被要求输入 名称, 年龄 和 薪水。

然后,结构体变量 p 是传递给函数使用:

displayData(p);

displayData() 的返回 void 类型并且接受一个结构体 Person 类型的参数。

然后从这个函数中显示结构体 p 的成员。

示例 2:在 C++ 中从函数返回结构体

#include <iostream>
using namespace std;

struct Person {
    char name[50];
    int age;
    float salary;
};

Person getData(Person);
void displayData(Person);

int main() {

    Person p, temp;

    temp = getData(p);
    p = temp;
    displayData(p);

    return 0;
}

Person getData(Person p) {

    cout << "Enter Full name: ";
    cin.get(p.name, 50);

    cout << "Enter age: ";
    cin >> p.age;

    cout << "Enter salary: ";
    cin >> p.salary;

    return p;
}

void displayData(Person p) {
    cout << "\nDisplaying Information." << endl;
    cout << "Name: " << p.name << endl;
    cout <<"Age: " << p.age << endl;
    cout << "Salary: " << p.salary;
}

这个程序的输出与上面的程序相同。

在这个程序中,我们在 main() 函数中创建了两个 Person 类型的结构体变量 ptemp

结构体变量 p 传递给 getData() 函数,该函数从用户那里获取输入,然后将函数的返回值存储在 temp 变量中。

temp = getData(p);

然后我们把 temp 复制给 p.

p = temp;

然后,再将结构体变量 p 传递给 displayData() 函数用来显示信息。

注意: 实际上,对大多数编译器和 C++ 版本来说, 我们不需要使用 temp 变量。我们可以简单地使用以下代码:

p = getData(p);