结构与函数
结构作为一种类型,当然可以作为函数的参数和返回值了,用法看下面例子就能明白:
#include <iostream>
using namespace std;
struct student{
int id;
char *name;
float score;
};
void output (struct student);
struct student input(int,char [],float);
void main()
{
int id;
char name[20];
float score;
cout<<"Input: id name score"<<endl;
cin>>id>>name>>score;
student stu = input(id,name,score);
output(stu);
}
void output (struct student stu)
{
cout<<"Id: "<<stu.id<<" Name: "<<stu.name<<" Score: "<<stu.score<<endl;
}
struct student input(int id,char name[],float score)
{
student stu1;
stu1.id=id;
stu1.name=name;
stu1.score=score;
return stu1;
}
第3到7行定义结构student
第8行和第9行声明函数output和input,output的参数是student,input返回类型是student
第17行18行行分别调用input和output函数
第20行开始是output和input函数的实现。output函数的参数是student类型的变量,将变量的成员输出。input的参数有int型、字符数组和浮点型,声明student类型变量stu1,并对其成员赋值,然后返回stu1。
这是说一下stu和stu1的关系。stu是在main函数中声明的,其声明周期是从程序执行到第17行开始到main函数执行完。而变量stu1则是在函数input中声明,从程序执行到第26行开始,到函数返回值用完。所以第17行是用stu1的成员的值给stu的成员赋值,第17行执行完后,stu1在内存中被释放,而stu还在。