结构体变量作为函数形参:
#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.采用结构体类型的引用,虚实结合时传递的是结构体变量的地址,因而效率较高。它兼有上述二者的优点。
网友评论