结构体基础知识
结构体的声明使用struct
关键字,如果我们想要把我们的学籍信息组织一下的话,可以这样表示:
1、声明
struct Info
{
unsigned long identifier;//学号,用无符号长整数表示
char name[20];//名字,用字符数组表示
unsigned int year;//入学年份,用无符号整数表示
unsigned int years;//学制,用无符号整数表示
}
这样,我们就相当于描绘好了一个框架,以后要用的话直接定义一个这种类型的变量就好了。
2、定义
我们刚刚申请了一个名叫Info
的结构体类型,那么理论上我们可以像声明其他变量的操作一样,去声明我们的结构体操作,但是C语言中规定,声明结构体变量的时候,struct
关键字是不可少的。
struct 结构体类型名 结构体变量名
不过,你可以在某个函数里面定义:
#include <stdio.h>
struct Info
{
unsigned long identifier;//学号,用无符号长整数表示
char name[20];//名字,用字符数组表示
unsigned int year;//入学年份,用无符号整数表示
unsigned int years;//学制,用无符号整数表示
};
int main(void)
{
/**
*在main函数中声明结构体变量
*结构体变量名叫info
*struct关键字不能丢
*/
struct Info info;
...
}
也可以在声明的时候就把变量名定义下来(此时这个变量是全局变量):
#include <stdio.h>
struct Info
{
unsigned long identifier;//学号,用无符号长整数表示
char name[20];//名字,用字符数组表示
unsigned int year;//入学年份,用无符号整数表示
unsigned int years;//学制,用无符号整数表示
} info;
/**
*此时直接定义了变量
*该变量是全局变量
*变量名叫info
*/
int main(void)
{
...
}
3、访问结构体成员
结构体成员的访问有点不同于以往的任何变量,它是采用点号运算符.来访问成员的。比如,info.name
就是引用info
结构体的name
成员,是一个字符数组,而info.year
则可以查到入学年份,是个无符号整型。
比如,下面开始录入学生的信息:
//Example 01
#include <stdio.h>
struct Info
{
unsigned long identifier;//学号,用无符号长整数表示
char name[20];//名字,用字符数组表示
unsigned int year;//入学年份,用无符号整数表示
unsigned int years;//学制,用无符号整数表示
};
int main(void)
{
struct Info info;
printf("请输入学生的学号:");
scanf("%d", &info.identifier);
printf("请输入学生的姓名:");
scanf("%s", info.name);
printf("请输入学生的入学年份:");
scanf("%d", &info.year);
printf("请输入学生的学制:");
scanf("%d", &info.years);
printf("\n数据录入完毕\n\n");
printf("学号:%d\n姓名:%s\n入学年份:%d\n学制:%d\n毕业时间:%d\n", \
info.identifier, info.name, info.year, info.years, info.year + info.years);
return 0;
}
运行结果如下:
//Consequence 01
请输入学生的学号:2018210101
请输入学生的姓名:Zeal.Zhang
请输入学生的入学年份:2018
请输入学生的学制:4
数据录入完毕
学号:2018210101
姓名:Zeal.Zhang
入学年份:2018
学制:4
毕业时间:2022