学习C语言的第十五天07.29

📅 2026/7/30 7:58:31
学习C语言的第十五天07.29
0基础学习C语言因为工作的原因所以很少有时间去学习但我还是会抽空去学习今天是学习C语言的第十五天今天我学到了typedef结构体输出数据结构体指针和指向符联合体和枚举类型枚举类型输出红-绿-黄-红malloc开辟 realloc扩容我的编程#define_CRT_SECURE_NO_WARNINGS#includestdio.h#includestdlib.h#includeassert.h//typedef结构体输出数据typedefstructxinxi//typedef代表类型 struct就是代表它的类型 后续xinxi不用表示类型{charname[10];intage;}xinxi;intmain(){xinxi add[3];//3表示可以打三个信息intlensizeof(add)/sizeof(add[0]);//计算add里面的字符数//输入信息for(inti0;ilen;i){printf(请输入第%d个人的姓名和年龄: ,i1);scanf(%s %d,add[i].name,add[i].age);}printf(\n输出结果:\n);//输出信息for(inti0;ilen;i){printf(姓名: %s, 年龄: %d\n,add[i].name,add[i].age);}return0;}//联合体和枚举类型 枚举类型输出红-绿-黄-红//联合体(又叫共生体)typedefunionUn{charc;inti;}Un;//枚举类型typedefenumttb{red,green,yellow}ttb;intmain(){Un u{0};printf(%zu\n,sizeof(Un));//因为Un是联合体所以变量c和i会共用联合体的内存所以输出4ttb cltyellow;printf(%d\n,clt);//枚举类型就是把结构体里的所有类型替换为0123....ttb lightred;for(inti0;i4;i){switch(light)//判断语句//switch() 括号里只能是整型、字符、枚举int、char、enum不能是小数、字符串{casered://相等red → 执行这个 case 里的代码//不相等 → 跳过当前 case继续看下一个printf(红灯停\n);lightgreen;break;casegreen:printf(绿灯行\n);lightyellow;break;caseyellow:printf(黄灯减速\n);lightred;break;default:printf(灯坏了\n);break;}}return0;}//malloc开辟 realloc扩容intmain(){//malloc开辟//使用malloc开辟20个字节将来放整形intn5;int*p(int*)malloc(n*sizeof(int));assert(p!NULL);if(pNULL){printf(开辟失败\n);return1;}//绝大多数机器 int 占 4 字节; 只能存一个整形5 × 4 20 字节//所以 malloc 一次性拿到 20 字节堆空间用来存放5 个 int 整数//5 个 int刚好存 5 个数字也就是5个整形//给数组赋值for(inti0;in;i){*(pi)i;}//打印当前数组for(inti0;in;i){printf(%d ,*(pi));}printf(\n);//开始扩容 先返回给一个临时的指针int*m(int*)realloc(p,n*sizeof(int)*2);assert(m!NULL);if(mNULL){printf(扩容失败\n);return1;}//代码执行到这里说明扩容成功pm;//打印当前数组for(inti0;i2*n;i){printf(%d ,*(pi));}return0;}我的学习笔记