美文网首页程序员
函数形参之结构体变量、指针、引用

函数形参之结构体变量、指针、引用

作者: 平凡的鱼仔 | 来源:发表于2018-10-01 19:57 被阅读4次

    结构体变量作为函数形参:

    #include "stdafx.h"
     
    struct student
    {
        int num;
        char* name;
        float score[3];
    };
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        void print(student); //函数声明,形参类型为结构体变量
        student stu;               
        stu.num=12345; 
        stu.name="Zhang San";
        stu.score[0]=70;
        stu.score[1]=80;
        stu.score[2]=90;
        print(stu); //调用print函数,输出stu各成员的值
        getchar();
        return 0;
    }
    
    void print(student st)
    {
        printf("%d %s %.1f %.1f %.1f",st.num,st.name,st.score[0],st.score[1],st.score[2]);
    }
    

    输出结果:12345 Zhang San 70.0 80.0 90.0

    结构体指针作为函数形参:

    #include "stdafx.h"
    
    struct student
    {
        int num;
        char* name;
        float score[3];
    }stu={12345,"Zhang San",70,80,90};
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        void print(student*); //函数声明,形参类型为结构体指针
        print(&stu); 
        getchar();
        return 0;
    }
    
    void print(student* p)
    {
        printf("%d %s %.1f %.1f %.1f",p->num,p->name,p->score[0],p->score[1],p->score[2]);
    }
    

    输出结果:12345 Zhang San 70.0 80.0 90.0

    结构体引用作为函数形参:

    #include "stdafx.h"
    
    struct student
    {
        int num;
        char* name;
        float score[3];
    }stu={12345,"Zhang San",70,80,90};
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        void print(student&); //函数声明,形参类型为结构体引用
        print(stu); 
        getchar();
        return 0;
    }
    
    void print(student& s)
    {
        printf("%d %s %.1f %.1f %.1f",s.num,s.name,s.score[0],s.score[1],s.score[2]);
    }
    

    输出结果:12345 Zhang San 70.0 80.0 90.0

    ps:
    1.用结构体变量作实参和形参,程序直观易懂,效率是不高的
    2.采用指针变量作为实参和形参,空间和时间的开销都很小,效率较高,可读性较差。
    3.采用结构体类型的引用,虚实结合时传递的是结构体变量的地址,因而效率较高。它兼有上述二者的优点。

    相关文章

      网友评论

        本文标题:函数形参之结构体变量、指针、引用

        本文链接:https://www.haomeiwen.com/subject/mninoftx.html