当前位置: 首页 > news >正文

c语言模板

// https://blog.csdn.net/lianghudream/article/details/149105035 // // gcc 1.c &&./a.out #include <stdio.h> typedef enum { Idle, Running, Error } State; typedef enum { Start, Stop, Reset } Event; // 状态处理函数 State handleStart() { return Running; } State handleStop() { return Idle; } // 跳转表:StateMachine[当前状态][事件] = 处理函数. 每一个状态,和一个事件发生时候对应的处理函数. // StateMachine[3][3]:这是一个 3×3 的数组。 记住[] 的优先级比* 高. // (*StateMachine[3][3]):数组的每个元素是一个 指针。 stateMachine是一个指针组成的数组. // State (*)(void):这个指针指向一个 没有参数、返回 State 类型的函数。 State (*StateMachine[3][3])() = { [Idle] = { [Start] = handleStart }, [Running] = { [Stop] = handleStop } }; int test(){//这样可以不在main里面互相污染变量名空间. printf("数组指针\n"); int arr[2][3] = { {1, 2, 3}, {4, 5, 6} }; // 声明一个包含2行3列的二维数组 int(*ptr)[3]; // 声明一个指向包含3个整数的数组的指针 ptr = arr; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("%d ", *(*(ptr + i) + j)); } printf("\n"); } } int test3(){ int a=3; int* pa=&a; // printf("%d\n",***pa); //对于非函数,一直进入就不行. // printf("%d\n",**pa); printf("%d\n",*pa); printf("%d\n",*pa); printf("%d\n",*pa); } int main(void) { printf("指针数组\n"); int* ptrArray[5]; // 声明一个包含5个指向整数的指针的数组 int a = 1, b = 2, c = 3, d = 4, e = 5; ptrArray[0] = &a; ptrArray[1] = &b; ptrArray[2] = &c; ptrArray[3] = &d; ptrArray[4] = &e; for (int i = 0; i < 5; i++) { printf("%d ", *ptrArray[i]); } printf("=========================\n"); test(); //枚举类型: typedef enum { MON, TUE, WED } Weekday; for (Weekday day = MON; day <= WED; day++) { printf("%d\n", day); // 输出0, 1, 2 } printf("测试test3\n"); test3(); printf("加几个星都表示这个指针所指向的函数,不会一直进入内容");//多取几次星也都对. printf("StateMachine[Idle][Start]() = %d\n", (***StateMachine[Idle][Start])()); //函数指针表示一个指针他指向的是一个函数. 函数的指针, 主语是指针. printf("StateMachine[Idle][Start]() = %d\n", (**StateMachine[Idle][Start])()); //函数指针表示一个指针他指向的是一个函数. 函数的指针, 主语是指针. printf("StateMachine[Idle][Start]() = %d\n", (*StateMachine[Idle][Start])()); //函数指针表示一个指针他指向的是一个函数. 函数的指针, 主语是指针. printf("StateMachine[Idle][Start]() = %d\n", (StateMachine[Idle][Start])()); // 看出来函数指针加不加*都表示这个函数. struct Point { int x, y; }; struct Point p = { .y = 2, .x = 3 }; // 等价于 {3, 2} // 指定初始化器(Designated Initializer)是C99标准引入的重要特性 这种显示初始化的方式可以使代码更加清晰易读 printf("p.x = %d, p.y = %d\n", p.x, p.y); union Data { int i; float f; }; union Data d1 = { .f = 3.14 }; // 仅初始化f成员。 printf("d.i = %d, d.f = %f\n", d1.i, d1.f); printf("Hello, World!\n"); int arr[6] = {[5] = 212}; // C99 指定初始化器 for (int i = 0; i < 6; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
http://www.cnnetsun.cn/news/195540.html

相关文章:

  • Zenodo科研数据管理平台深度解析与实战应用指南
  • 1Fichier下载管理:3分钟快速上手的5个高效解决方案
  • 5步掌握CircuitJS1桌面版:零基础搭建专业电路仿真环境
  • 全网资源一键下载:Res-Downloader深度使用手册
  • Cyber Engine Tweaks终极指南:解锁《赛博朋克2077》无限潜能
  • FlutterOpenHarmony列表滚动组件实现
  • HLS Downloader:免费开源工具让流媒体视频下载变得简单高效
  • CircuitJS1 Desktop Mod完全掌握:零基础电路仿真实战宝典
  • 解锁全球通信自由:Nrfr如何让你的手机真正“本地化“
  • 9、Windows应用开发中的功能实现与实用类解析
  • 12、俄罗斯方块与绘图应用开发详解
  • 网页转图片利器:wkhtmltoimage零基础入门指南
  • 终极网页截图工具:wkhtmltoimage完整使用指南
  • Mac Mouse Fix:为什么你的鼠标在Mac上需要一次“性能升级“?
  • FramePack实战指南:5分钟掌握AI舞蹈视频制作全流程
  • 深岩银河存档编辑器:3分钟学会游戏资源自由调配
  • LangFlow品牌视觉识别系统(VI)设计理念
  • Free-NTFS-for-Mac终极指南:如何免费解锁Mac完整NTFS读写权限
  • ScienceDecrypting:彻底告别加密文档困扰的终极解决方案
  • LanzouAPI直链解析核心技术揭秘:如何实现蓝奏云高速下载的终极方案
  • Windows更新故障全攻略:从诊断到修复的一站式解决方案
  • 为什么90%的设计师都在使用Ai2Psd工具?揭秘AI到PSD无损转换的终极方案
  • Zotero Reference:5分钟搞定PDF参考文献智能管理
  • Navicat Mac版试用期重置技术解析与实践指南
  • HLS流媒体下载终极指南:轻松捕获在线视频的高效方法
  • LRCGET歌词下载神器:彻底解决离线音乐库歌词同步难题
  • 炉石传说脚本终极指南:游戏自动化的智能助手高效技巧
  • 哔哩哔哩漫画批量下载完整教程:从入门到精通
  • 革命性3D模型预览方案:让Windows资源管理器智能化升级
  • Windows苹果设备驱动完整安装指南:一键解决连接烦恼