在实际问题中,一组数据往往具有不同的数据类型。例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。显然不能用一个数组来存放这一组数据。因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,C语言中给出了另一种构造数据类型——“结构(structure)”或叫“结构体”。 它相当于其它高级语言中的记录。“结构”是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。结构既是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义函数一样。
让编程序的人自定义一个数据类型。
// // main.c // 结构体 // // Created by udc on 2021/7/12. /* 1. 什么是结构体? 结构体和数组很像,都是用于存储一组数据的 但是数组存储的是一组相同类型的数据 结构体存储的是一组不通过类型的数据 2. 如何定义结构体 struct 结构体名称{ 数据类型 属性名称; 数据类型 属性名称; ... }; 3. 如何定义结构体变量 3.1. struct 结构体名称 结构体变量名称; 3.2. 直接在定义结构体后面定义结构体变量 3.3. 直接在定义结构体后面定义结构体变量,不要结构体名称 4. 初始化 4.1. 定义变量时初始化, 注意对应 4.2. 指定属性,一一赋值 5. 结构体和数组的区别? 6. 结构体作用域也分全局和局部 7. 结构体的存储细节 */ #include <stdio.h> int main(int argc, const char * argv[]) { // insert code here... struct Person{ char *name; int age; float score; }; struct Person per; per.name = "疾风剑豪"; printf("per 名字 = %s ",per.name); struct Man{ char *name; int age; float score; } man; printf("man 名字 = %s ",man.name); struct{ char *name; int age; float score; } wonman; printf("wonman 名字 = %s ",wonman.name); struct Person per2 = {"压缩", 12, 59.0}; printf("per2 名字 = %s ",per2.name); struct Person per3 = {.name = "盲僧", 12, 59.0}; printf("per3 名字 = %s ",per3.name); //数组不能先定义,再一次性初始化,但是结构体可以, 需要强制类型转换 // int arr[3]; // arr = {1,2,3}; struct Animal{ char *name; int age; }; struct Animal ani; ani = (struct Animal){"Dog", 5}; return 0; }