1. 结构体变量的引用方法
例如,若有数据定义:
struct Student{
char name[10];
int age;
struct Date birthday;
}s1,s2,stu[10];
则下面对结构体变量的引用都是正确的:
s1.age=20;
scanf("%d",&s1.age);
gets(stu[0].name);
strcpy(stu[1].name,"zhangsan");
s1.birthday.year=1997;
scanf("%d",&s1.birthday.month);
s2=s1;
而下面的引用都是错误的:
s1={"Lisi",20,10,30,1997}; //结构体变量不能整体使用
s1.birthday={10,30,1997}; //birthday也是一个整体,不是基本类型
scanf("%s%d%d%d%d",&s1); //结构体变量不能整体使用
2. 结构体变量引用举例
设有30个学生,每个人都有学号、姓名和考试成绩三项数据,从键盘输入这些数据,找出成绩最高者并输出其数据。
#include<stdio.h>
struct Student{
char num[10];
char name[10];
int score;
};
int main()
{
struct Student s[30];
int i,k;
for(i=0;i<30;i++){
scanf("%s",&s[i].num);
scanf("%s",&s[i].name);
scanf("%d",&s[i].score);
}
k=0;
for(i=1;i<30;i++)
if(s[i].score>s[k].score)
k=i;
printf("%s %s %d\n",s[k].num,s[k].name,s[k].score);
return 0;
}
3. 用指针变量操作结构体变量
与普通变量一样,结构体变量也可以通过指针变量来间接访问。
struct Student{
char name[9];
int score;
};
struct Student s,*p=&s;
scanf("%s",(*p).name);
(*p).score=90;
或者也可以写成:
scanf("%s",p->name);
p->score=90;