C语言:结构体变量
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;