您的位置:首页 > 其它

将一个结构体变量中的数据传递给另一个函数

2014-08-31 01:53 274 查看
将一个结构体变量中的数据传递给另一个函数,有下列3种方法:

用结构体变量名作参数。一般较少用这种方法。
用指向结构体变量的指针作实参,将结构体变量的地址传给形参。
用结构体变量的引用变量作函数参数。

下面通过一个简单的例子来说明,并对它们进行比较。

【例7.5】有一个结构体变量stu,内含学生学号、姓名和3门课的成绩。要求在main函数中为各成员赋值,在另一函数print中将它们的值输出。

1) 用结构体变量作函数参数。

#include <iostream>

#include <string>

using namespace std;

struct Student//声明结构体类型Student

{

int num;

char name[20];

float score[3];

};

int main( )

{

void print(Student); //函数声明,形参类型为结构体Student

Student stu; //定义结构体变量

stu.num=12345; //以下5行对结构体变量各成员赋值

stu.name="Li Fung";

stu.score[0]=67.5;

stu.score[1]=89;

stu.score[2]=78.5;

print(stu); //调用print函数,输出stu各成员的值

return 0;

}

void print(Student st)

{

cout<<st.num<<" "<<st.name<<" "<<st.score[0]

<<" " <<st.score[1]<<" "<<st.score[2]<<endl;

}

#include <iostream>
#include <string>
using namespace std;
struct Student//声明结构体类型Student
{
int num;
char name[20];
float score[3];
};
int main( )
{
void print(Student); //函数声明,形参类型为结构体Student
Student stu; //定义结构体变量
stu.num=12345; //以下5行对结构体变量各成员赋值
stu.name="Li Fung";
stu.score[0]=67.5;
stu.score[1]=89;
stu.score[2]=78.5;
print(stu); //调用print函数,输出stu各成员的值
return 0;
}
void print(Student st)
{
cout<<st.num<<" "<<st.name<<" "<<st.score[0]
<<" " <<st.score[1]<<" "<<st.score[2]<<endl;
}


运行结果为:

12345 Li Fung 67.5 89 78.5 (2)

2)用指向结构体变量的指针作实参在上面程序的基础上稍作修改即可。

#include <iostream>

#include <string>

using namespace std;

struct Student

{

int num; string name; //用string类型定义字符串变量

float score[3];

}stu={12345,"Li Fung",67.5,89,78.5}; //定义结构体student变量stu并赋初值

int main( )

{

void print(Student *); //函数声明,形参为指向Student类型数据的指针变量

Student *pt=&stu; //定义基类型为Student的指针变量pt,并指向stu

print(pt); //实参为指向Student类数据的指针变量

return 0;

}

//定义函数,形参p是基类型为Student的指针变量

void print(Student *p)

{

cout<<p->num<<" "<<p->name<<" "<<p->score[0]<<" " <<

p->score[1]<<" "<<p->score[2]<<endl;

}

#include <iostream>
#include <string>
using namespace std;
struct Student
{
int num; string name; //用string类型定义字符串变量
float score[3];
}stu={12345,"Li Fung",67.5,89,78.5}; //定义结构体student变量stu并赋初值
int main( )
{
void print(Student *); //函数声明,形参为指向Student类型数据的指针变量
Student *pt=&stu; //定义基类型为Student的指针变量pt,并指向stu
print(pt); //实参为指向Student类数据的指针变量
return 0;
}

//定义函数,形参p是基类型为Student的指针变量
void print(Student *p)
{
cout<<p->num<<" "<<p->name<<" "<<p->score[0]<<" " <<
p->score[1]<<" "<<p->score[2]<<endl;
}


调用print函数时,实参指针变量pt将stu的起始地址传送给形参p(p也是基类型为student的指针变量)。这样形参p也就指向stu,见图7.10。

在print函数中输出p所指向的结构体变量的各个成员值,它们也就是stu的成员值。在main函数中也可以不定义指针变量pt,而在调用print函数时以&stu作为实参,把stu的起始地址传给实参p。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐