应用结构体的原因:
为使将不同类型的数据组合成一个有机体。
示例:
学生的学号/姓名/性别/年龄/地址等;
int num; char name[20];char sex;int age;
char addr[30];所需这些数据类型。
定义一个结构的一般形式为:
struct (结构名可有可无)
{
组成部分
};
其中组成部分的分为若干个小部分
且它们的形式为:
类型说明符 名称;
特此说明,初次学习的时候,可能会把struct看成strcat,strcat使在有头文件#include<string.h>才可使用。struct则不需要
由示例(1)进行实操;
struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
也可在其后加上变量名;
struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}girl , boy;
注意:
在定义了结构体变量以后,当然可以引用这个变量。但得遵守以下规则:
1.不能将一个结构体变量作为一个整体进行输入输出。
正确引用结构体变量中组成部分的方式为:
结构体变量名.组成部分的名称
例如:girl.num表示girl变量中的num(学号)这部分,同时可对进行赋值:girl.num=100;
输出方式也为:printf("%d",girl.num);
输入方式:scanf("%d",&girl.num);
"."这个运算符是所有运算符中优先级最高的,因此可以把girl.num作为一个整体看待。
如果组成部分中又隶属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。
这就牵涉到结构体的嵌套:
struct date
{
int year;
int month;
int day;
}birthday;
struct student
{
int num;
char name[20];
char sex;
int age;
struct date;
float score;
char addr[30];
}girl;
对month进行赋值有:
girl.birthday.month;
对结构体变量的组成部分可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。
例如:
girl.score++;sum=girl.score+boy.score;
可以引用结构体变量组成部分的地址也可用结构体变量的地址。这种用法就与数组相类似了
#include<stdio.h>
int main()
{
struct st
{
int num;
char name[20];
int score;
char sex;
}girl,boy;
boy.num=10001;
printf("xuehao=%d\n",boy.num);
printf("xuehao=%d\n",boy);
}
运行结果是一样的;
printf(“xuehao=%d\n”,boy);由数组来看是从第一个开始输出(脚标[0])——也就是num。