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;
}
运行结果如下:


**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**