程序员

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

2018-10-01  本文已影响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.采用结构体类型的引用,虚实结合时传递的是结构体变量的地址,因而效率较高。它兼有上述二者的优点。

上一篇下一篇

猜你喜欢

热点阅读