c语言 第七章:构造数据类型
基本数据类型short、int、long、char、float、double、void指针类型构造数据类型结构体、共用体、枚举1.结构体①结构体的声明struct名称{数据类型 成员1数据类型 成员2数据类型 成员3}声明“struct名称”的结构体类型是一种数据类型【例】struct date{int year;int mon;int day;}struct time{int hour;int min;int sec;};struct datetime{int year;int mon;int day;int hour;int min;int sec;}struct datetime{struct date mdate;struct time mtm;}struct datetime{struct date{int year;int mon;int day;}mdatestruct time{int hour;int min;int sec;}mtm;};struct{int year;int mon;int day;}【注意】1.声明结构体的时候结构体{}后面的“”不能省。2.结构体成员之间用“”隔开。3. struct后面的“名称”可以省略省略后就是一个匿名结构体。②结构体变量定义int num;结构体类型 变量名struct date mydate;struct{int year;int mon;int day;}mydate声明结构体类型的同时定义了一个变量变量的变量名mydate③结构体初始化a/全部初始化struct date mydate {202686};struct datetime{struct date mdate;struct time mtm;}struct datetime mydt {{2026,8,6}, {14,5,23}};b.部分初始化struct date mydate {.year 2024,.day 6,}④结构体数据成员的访问a.通过结构体变量访问结构体成员结构变量变量名.成员1结构变量变量名.成员2结构变量变量名.成员3结构变量变量名.成员1表达式的结果取决成员的数据类型。mydate.yearmydate.mon;mydate.day;b.通过结构体指针访问结构体成员结构体指针-成员1结构体指针-成员2结构体指针-成员3结构变量变量名.成员1表达式的结果取决成员的数据类型。⑤结构体的存储方式结构体对齐原则1.结构体成员在内存中存储时成员必须存储在自己字节大小的整数倍位置2.结构体整体占的内存大小是结构体中最大成员字节数的整数倍。【注意】1.在不同位系统下相同结构体在内存中占的字节空间可能不一样原因64位系统long/指针类型占8字节32位系统long/指针类型占4字节。2.可以强制让结构体按指定字节数对齐。#pragma pack(1) //强制结构体按1字节对齐struct s{int a; //4char b; //1int c; //4};#pragma pack() //取消强制结构体按1字节对齐sizeof(s) ---9字节//12struct s1{short a;int b;char c;};//8struct s2{char a;short b;int c;};//64bit -- 24 //32bit--16struct s3{char a;int b;short c;long d;};//64bit 16 32bit--8struct s4{char a;int *p;};//24struct s5{char a[16];char b;int c;};⑥结构体做为函数参数传递如果要在被调函数中修改主调函数中的结构体变量则传递结构体变量的地址如果在被调函数中使用主调函数中定义的结构体变量可以值传递也可以传地址。⑦结构体数组struct名称 数组名[元素个数]struct名称 数组名[元素个数] {{}{}{}}数组名[下标]; ---》数据类型”struct名称“类型结构体数组中的成员访问struct stu ss[4] { {zhangsan, 23, 90}, {lisi, 22, 67}, {wanger, 24, 89}, {zhaowu, 20, 99}};void printf_stu_array(struct stu *ss, int len){for (int i 0; i len; i){//printf(%s %d %d\n, ss[i].name, ss[i].age, ss[i].score);//printf(%s %d %d\n, (ssi)-name, (ssi)-age, (ssi)-score);//printf(%s %d %d\n, (*(ssi)).name, (*(ssi)).age, (*(ssi)).score);}}2.共用体/联合体①基本语法声明共用体union名称{数据类型 成员1数据类型 成员2数据类型 成员3}定义共用体变量union名称 变量名【特点】1.共用体中的所有成员共用一块内存空间2.共用体在内存中占的字节数取决于最大字节数的成员。3.共用体存储的数据和最后一次的成员赋值有关。②内存大小端存储方式小端内存的高地址存储高字节位内存的低地址存储低字节位大端内存的高地址存储低字节位内存的低地址存储高字节位③大小端测试方式a.指针方法int main(void){int a 0x11223344;char *p (char *)a;if (*p 0x44){printf(small\n);}else{printf(big\n);}}b.共用体方法union s{int a;char b;};int main(void){union s tmp;tmp.a 1;if (tmp.b){printf(small\n);}else{printf(big\n);}return 0;}两种办法3.枚举类型①基本语法枚举类型的声明enum名称{枚举常量1枚举常量2枚举常量3}#define RED 0#define BLUE 1符号常量【注意】1.枚举里面的成员都是枚举常量都是整形常量所以不需要写数据类型2.枚举常量根据行业规范一般写成大写方式和普通变量区分3.枚举中的枚举常量类似于整形符号常量可以直接被引用4.枚举中的常量和常量之间用逗号隔开5.枚举中的枚举常量如果没有给定初始值则默认从0开始如果给其中的某个枚举常量给定了初始值则后面的常量以该值为基础自增1②枚举变量enum名称 变量名枚举变量是枚举类型但本质是一个整形。变量名枚举常量【练习】4. typedef关键字typedef为已有的数据类型重命名。typedef已有的数据类型 新名字【例】{MON 1,TUE,WED,THU,FRI,SAT,SUN,}WEEK_e;

相关新闻

从课程大纲到生产实践:LangChain RAG全栈开发的技术路线图

从课程大纲到生产实践:LangChain RAG全栈开发的技术路线图

# 从课程大纲到生产实践:LangChain RAG全栈开发的技术路线图## 一、背景:RAG为何成为LLM应用落地的核心范式2026年,大语言模型(LLM)的竞争已从"参数规模"转向"工程化落地"。尽管GPT-4o、Claude 4等…

2026/8/11 14:09:18 阅读更多 →
从零构建IMX415驱动:Linux内核下的Camera Sensor开发实录

从零构建IMX415驱动:Linux内核下的Camera Sensor开发实录

调试新的Camera Sensor,最头疼的往往不是电路连接,而是驱动移植。面对一块陌生的IMX415,如何让内核识别它?如何通过V4L2框架让它出图?很多开发者卡在I2C匹配失败或Probe函数报错这一步。本文基于灵眸科技嵌入式研发部的…

2026/8/11 14:09:18 阅读更多 →
2024口碑好的AI数据大屏生成工具推荐:国产零代码免费版

2024口碑好的AI数据大屏生成工具推荐:国产零代码免费版

最近半年,我们团队一直在找一款真正好用、口碑又靠谱的AI数据大屏生成工具。市面上号称AI生成大屏的工具不少,但真用下来,要么是伪AI、要么上手难、要么收费不透明。这篇文章,我就从一个小白的视角,把我从选型到深度使…

2026/8/11 14:09:18 阅读更多 →

最新新闻

深度解析Inno Setup中文翻译项目:三步实现专业级安装程序本地化

深度解析Inno Setup中文翻译项目:三步实现专业级安装程序本地化

深度解析Inno Setup中文翻译项目:三步实现专业级安装程序本地化 【免费下载链接】Inno-Setup-Chinese-Simplified-Translation :earth_asia: Inno Setup Chinese Simplified Translation 项目地址: https://gitcode.com/gh_mirrors/in/Inno-Setup-Chinese-Simplif…

2026/8/11 14:51:33 阅读更多 →
Wand-Enhancer完整指南:解锁WeMod高级功能的终极开源方案

Wand-Enhancer完整指南:解锁WeMod高级功能的终极开源方案

Wand-Enhancer完整指南:解锁WeMod高级功能的终极开源方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 如果你正在寻找一个安全、免费…

2026/8/11 14:51:33 阅读更多 →
Clinker基因簇可视化分析:5分钟快速生成专业级基因比较图表

Clinker基因簇可视化分析:5分钟快速生成专业级基因比较图表

Clinker基因簇可视化分析:5分钟快速生成专业级基因比较图表 【免费下载链接】clinker Gene cluster comparison figure generator 项目地址: https://gitcode.com/gh_mirrors/cl/clinker 你是否曾为复杂的基因簇比较分析而头疼?手动提取序列、运行…

2026/8/11 14:51:33 阅读更多 →
终极黑苹果配置指南:OpCore-Simplify图形化工具15分钟打造完美EFI

终极黑苹果配置指南:OpCore-Simplify图形化工具15分钟打造完美EFI

终极黑苹果配置指南:OpCore-Simplify图形化工具15分钟打造完美EFI 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果Open…

2026/8/11 14:51:33 阅读更多 →
5分钟快速上手:抖音下载神器完整使用指南,免费批量下载无水印视频

5分钟快速上手:抖音下载神器完整使用指南,免费批量下载无水印视频

5分钟快速上手:抖音下载神器完整使用指南,免费批量下载无水印视频 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and …

2026/8/11 14:51:33 阅读更多 →
小红书爆款笔记生产系统:从算法逻辑到数据驱动的全栈方法论

小红书爆款笔记生产系统:从算法逻辑到数据驱动的全栈方法论

1. 项目概述:从零到一,构建你的爆款笔记生产系统 做内容,尤其是像小红书这样的平台,最让人焦虑的莫过于“数据玄学”。你花几个小时精心打磨的笔记,发布后石沉大海;而别人随手一发,却可能轻松斩…

2026/8/11 14:50:33 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →