C++编程入门(二) 互动版

结构与函数

结构作为一种类型,当然可以作为函数的参数和返回值了,用法看下面例子就能明白:

#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还在。