跳到主要内容

C++ 结构体与函数

提示
  1. 向函数传递结构体:在C++中,结构体变量可以像普通参数一样传递给函数。例如,在displayData(p);中,结构体变量p被传递给displayData函数。
  2. 在函数中处理结构体数据:函数可以接受结构体作为参数,处理并显示结构体成员的数据,如displayData(Person p)函数所示。
  3. 从函数返回结构体:结构体也可以从函数返回。例如,在Person getData(Person p)函数中,结构体p被修改并返回给调用者。

结构体 变量可以作为参数传递给函数,并且可以像正常参数一样返回。

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

结构体变量可以像普通参数一样传递给函数。请考虑以下示例:

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

#include <iostream>
using namespace std;

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

void displayData(Person); // 函数声明

int main() {
Person p;

cout << "输入全名:";
cin.get(p.name, 50);
cout << "输入年龄:";
cin >> p.age;
cout << "输入薪水:";
cin >> p.salary;

// 函数调用,结构体变量作为参数
displayData(p);

return 0;
}

void displayData(Person p) {
cout << "\n显示信息。" << endl;
cout << "姓名:" << p.name << endl;
cout <<"年龄:" << p.age << endl;
cout << "薪水:" << p.salary;
}

输出

输入全名:Bill Jobs
输入年龄:55
输入薪水:34233.4

显示信息。
姓名:Bill Jobs
年龄:55
薪水: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 << "输入全名:";
cin.get(p.name, 50);

cout << "输入年龄:";
cin >> p.age;

cout << "输入薪水:";
cin >> p.salary;

return p;
}

void displayData(Person p) {
cout << "\n显示信息。" << endl;
cout << "姓名:" << p.name << endl;
cout <<"年龄:" << p.age << endl;
cout << "薪水:" << p.salary;
}

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

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

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

temp = getData(p);

我们然后将 temp 的值赋给 p。

p = temp;

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

注意: 我们不真正需要在大多数编译器和 C++ 版本中使用 temp 变量。相反,我们可以简单地使用以下代码:

p = getData(p);