news 2026/8/26 21:19:39

c语言模板

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 4:13:04

Zenodo科研数据管理平台深度解析与实战应用指南

还在为科研数据的长期保存和有效传播而困扰吗&#xff1f;作为CERN开发的开放科学平台&#xff0c;Zenodo科研数据管理平台为全球研究者提供了一站式解决方案&#xff0c;让数据管理变得专业而高效。 【免费下载链接】zenodo Research. Shared. 项目地址: https://gitcode.co…

作者头像 李华
网站建设 2026/8/27 14:43:12

1Fichier下载管理:3分钟快速上手的5个高效解决方案

还在为1Fichier文件下载的等待时间发愁吗&#xff1f;&#x1f680; 这款下载管理器能帮你轻松应对各种下载难题&#xff0c;让文件获取变得简单高效。无论你是普通用户还是需要批量下载&#xff0c;都能在短时间内掌握核心技巧&#xff0c;享受流畅的下载体验。 【免费下载链接…

作者头像 李华
网站建设 2026/8/26 14:45:27

5步掌握CircuitJS1桌面版:零基础搭建专业电路仿真环境

CircuitJS1桌面版是一款基于NW.js框架的离线电路仿真工具&#xff0c;将原本在线的电路模拟器完美封装为独立桌面应用。这款软件让电路设计爱好者无需联网就能享受完整的仿真体验&#xff0c;从简单的电阻分压到复杂的数字逻辑电路&#xff0c;都能轻松实现可视化分析和调试。 …

作者头像 李华
网站建设 2026/8/25 8:15:22

全网资源一键下载:Res-Downloader深度使用手册

在信息爆炸的时代&#xff0c;高效获取网络资源已成为现代人的必备技能。Res-Downloader作为一款专业的资源嗅探工具&#xff0c;通过智能拦截技术彻底改变了传统下载方式&#xff0c;让用户能够轻松捕捉并下载各类视频、音频资源。 【免费下载链接】res-downloader 资源下载器…

作者头像 李华
网站建设 2026/8/25 16:53:32

Cyber Engine Tweaks终极指南:解锁《赛博朋克2077》无限潜能

Cyber Engine Tweaks终极指南&#xff1a;解锁《赛博朋克2077》无限潜能 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks 想要彻底改变你的《赛博朋克2077》…

作者头像 李华
网站建设 2026/8/26 8:12:52

FlutterOpenHarmony列表滚动组件实现

前言 在笔记类应用中&#xff0c;列表滚动组件是展示笔记列表、分类目录、搜索结果等内容的核心组件。一个流畅、高效的列表组件能够显著提升用户体验&#xff0c;特别是当用户积累了大量笔记时&#xff0c;列表的性能表现尤为重要。本文将深入探讨Flutter和OpenHarmony平台上列…

作者头像 李华