有三种应用形式:
1、结构体的成员作函数的参数。
与普通变量作函数参数的用法相同。值传送,不能修改实参的值。
2、结构体指针作函数的参数。
将结构体的地址传送给函数,效率高,可以修改实参的值。
3、结构体作函数的参数。
将结构体的全部成员值传送给函数,效率低,不能修改实参的值。
结构体指针作参数的用法:
[例10.2]有一个结构体变量stu,内含学生学号、姓名和三门课程的成绩。要求在main中赋以值,在函数
print中打印输出。
#include "stdio.h"
#include "string.h"
#define format "%d\n %s\n %f\n %f\n %f\n"
struct student
{
int num;
char name[20];
float score[3];
};
void print(struct student *p);
void main()
{
struct student stu;
stu.num = 12345;
strcpy(stu.name, "Li Li");
stu.score[0] = 67.5;
stu.score[1] = 89;
stu.score[2] = 78.6;
print(&stu);}
void print(struct student *p) {
printf(format, p->num, p->name, p->score[0], p->score[1], p->score[2]);
printf("\n");
}
正确调用和错误调用:
正确:
1、
char func(struct compABC *ABC)
{
ABC->menber1 = 12;
ABC->menber2 = 34;
}
2、
char func(struct compABC *ABC)
{
(*ABC).menber1 = 12;
(*ABC).menber2 = 34;
}
错误:
char func(struct compABC *ABC)
{
*ABC->menber1 = 12;
*ABC->menber2 = 34;
}
(.的优先级高于*)
char func(struct compABC *ABC)
{
*ABC.menber1 = 12;
*ABC.menber2 = 34;
}