结构体,是构造类型的一种,也就是由基本类型构造的类型。
构造类型:结构体struct、联合体union、枚举类型enum。
1. 定性:
新的“数据类型”。
2. 意义:
有些信息的组成数据并不止一种,
囊括我们想要描述的大多数数据。(复合类型信息)。
数据形成一体。
3. 定义方式:
1. 类型定义(注意最后的分号)
1 2 3 4 5 6 7 8 9 10 11 12 13
| struct 结构体类型名 { 类型名 成员名; };
typedef struct 结构体类型名 { 类型名 成员名; } 你想要的简化名;
typedef 类型名 简化名;
|
内部的单个变量类型叫做成员。
主要创建在主函数外部。
2. 变量定义
1 2 3 4 5 6
| struct 结构体类型名 变量名;
struct 结构体类型名 变量名 = {常量1, 常量2...};
|
4. 数据存储与读取
使用索引对应成员的运算符: ->(指针,左边是地址,右边是成员名) / .(左边,索引成员名)
其他一样
额外提醒: 数组不能用=,结构体可以。–数组是类型不是地址。
参考-典型例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <stdio.h> #include <string.h>
struct student { char name[50]; int age; };typedef struct student stud;
int main(void) { int n, minage; stud stu1; scanf("%d", &n); getchar(); char minname[55] = {0};
for(int i = 0; i < n;i++) { scanf("%s %d",stu1.name, &stu1.age); if(i == 0) { strcpy(minname, stu1.name); minage = stu1.age; } else if(stu1.age < minage) { minage = stu1.age; strcpy(minname, stu1.name); } } printf("%s", minname); return 0; }
|
一般在一个东西的多个方面给予数据,用这些数据来排序比大小等等。