结构体
结构体是将很多类型的数据放在一块形成一个新的复合数据类型。
如何定义结构体
三种方法:
struct type
{
.
.
.
}struct type student_1,student_2;
这是结构体定义的一般方法:类型和变量分开定义,先定义类型再定义变量。
结构体类型定义
结构体类型名 结构体变量名表;
struct type
{
.
.
.
} student_1,student_2;
这是在定义类型的时候同时定义变量。
struct
{
.
.
} student_1,student_2;
这种方法是不定义类型名,直接定义结构体变量。
注:struct后面没有类型标识符。
#include<stdio.h>
int main()
{
struct Student
{
int num;
char name[20];
float score;
}student1,student2;
scanf("%d%s%f",&student1.num,student1.name,&student1.score);
scanf("%d%s%f",&student2.num,student2.name,&student2.score);
printf("the higher score is:\n");
if (student1.score>student2.score)
printf("%d %s %f",student1.num,student1.name,student1.score);
else if(student2.score>student1.score)
printf("%d %s %f",student2.num,student2.name,student2.score);
else {
printf("the higher score is no existence");}
}
对于上面这个程序,就是简单的结构体问题,输入两个学生的学号,姓名以及分数。然后根据分数的高低,来输出最高学生的相关信息。
在上面的scanf中,因为name是一个数组,所以在输入的时候不需要取地址。
结构体变量的引用
再对结构体变量进行赋值时,不可全部赋值,只能说是给结构体的某个成员进行赋值。在赋值的时候,会用到运算符‘.’
这个运算符要比*的级别高,例如:student_1.score 它表示访问了student_1的score。
在给结构体中的变量进行赋值的时候,可以调用strcpy函数。
strcpy(student_1.num,”03171104”)
strcpy(s1,s2),strcpy函数的作用是将s2的值全部copy到s1中,包括字符串结束标志。
结构体数组
struct type
{
int num;
char name[10];
float score;
char sex;
} struct type s[3];//定义了一个结构体数组s,它里面有三个元素,每个元素在内存中是连续存放的。
结构体数组元素的引用
strcpy(s[0].sex,"w")
注:结构体数组元素不能整体进行输入或输出。
结构体和函数
#include<stdio.h>
struct type
{
char num[8];
char name[10];
char sex;
float score;
};
struct type input()
{
struct type s0;
printf("请输入各同学的相关信息:\n");
scanf("%s %s %c %f",s0.num,s0.name,&s0.sex,&s0.score);
return s0;
}
void print(struct type s0)
{
printf("输出同学的相关信息:\n");
printf("%s %s %c %f\n",s0.num,s0.name,s0.sex,s0.score) ;
}
int main()
{
int i;
struct type s[2];
for (i=0;i<2;i++){
s[i]=input();
}
for(i=0;i<2;i++){
print(s[i]);
}
}
利用了 input这个输入函数和print这个输出函数 。