结构体作为函数参数

来源:互联网 发布:十大必看电影 知乎 编辑:程序博客网 时间:2024/05/16 14:38

结构体作为函数参数

一、值传递

#include <iostream>#include <string>using namespace std;struct Student{    int id;    string name;    float score[2];};void OutCome(Student s){    cout<<s.id<<','<<s.name<<','<<s.score[0]<<','<<s.score[1]<<endl;}int main(){    Student stu={2013666,"Tom",{88,99}};    OutCome(stu);    return 0;}

二、引用传递

#include <iostream>#include <string>using namespace std;struct Student{    int id;    string name;    float score[2];};//引用传递不会进行内存重新分配,因此和指针传参类似,效率很高void OutCome(Student &s)  //引用传参{    cout<<s.id<<','<<s.name<<','<<s.score[0]<<','<<s.score[1]<<endl;}int main(){    Student stu={2013666,"Tom",{88,99}};    OutCome(stu);    return 0;}

三、指针传递

把结构体的指针作为实参

#include <iostream>#include <string>using namespace std;struct Student{    int id;    string name;    float score[2];};void OutCome(Student *s){    //注意指针访问结构体就不能用“.”啦,要用“->”    cout<<s->id<<','<<s->name<<','<<s->score[0]<<','<<s->score[1]<<endl;}int main(){    Student stu={2013666,"Tom",{88,99}};    OutCome(&stu);   //这种写法不是特别规范,但可以清晰表明传递的实际上是地址    //嘿嘿,下面这样写才清晰    //Student *p=&stu;    //OutCome(p)    return 0;}
原创粉丝点击