大家好,又见面了,我是你们的朋友全栈君。 关于静态库和动态库的使用和制作方法。...http://blog.csdn.net/morixinguan/article/details/52451612 今天我们要搞明白的一个概念叫回调函数。 什么是回调函数?...百度的权威解释如下: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。...回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
说明 以下关键字顺序已按学习先后顺序编排。...关键字 用途 void 定义空类型变量或空类型指针或指定函数无返回值 int 定义整型变量或指针 short 定义短整型变量或指针 long 定义长整型变量或指针 long long 定义长长整型变量或指针...float 定义浮点型变量或指针 double 定义双精度浮点型变量 char 定义字符型变量或指针 signed 定义有符号的整型或字符型变量或指针 unsigned 定义无符号的整型或字符型变量或指针...return 从函数返回 auto 指定变量的存储类型是自动型变量(存储类型默认是自动型) register 指定变量的存储类型是寄存器型变量,已过时 static 指定变量的存储类型是静态变量,或指定函数是静态函数...extern 声明外部变量或函数 struct 定义结构体类型 union 定义联合体类型 enum 定义枚举类型 typedef 为数据类型定义别名 链接--C语言初学者常用标准库函数 https
回调函数在程序开发中是一个非常重要的概念,所谓的回调其实就是不同程序模块之间的接口和约定,是软件分层设计的基本方式。...,也就是C++或者JAVA等现代编程语言声称的所谓面向接口编程。...同时回调也是定制化软件的基石,通过回调机制将软件的前端和后端分离,前端提供逻辑策略,后端提供逻辑实现。...我们知道C语言中的函数实际上就相当于一个人,你给他一些参数,他帮你完成一样固定的功能,比方说你给厨师一个菜名,他将会把这道菜烹饪出来,你给医生一位病人,他将会对这位病人进行医治等等,这里,厨师和医生都相当于功能确切的函数...你传递给小妹的电话号码,相当于一个能找到大厨的指针,被称之为函数指针,回调机制就是靠传递函数指针来告知回调函数的位置的。
一、回调函数的定义 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个 函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。...二、qsort函数的实现 qsort函数是一个快排函数; qsort函数需要传的参数分别是:首元素地址,元素的个数,每个元素的大小(字节为单位),一个比较函数(需要自己实现); 排列数组:...qsort(s, sz, sizeof(s[0]), compare); Print(s,sz); return 0; } 在以上两种类型排序中,compare函数都是回调函数...; 三、利用冒泡排序的思想模拟实现qsort()函数 这个bubble_sort函数可以排序任意类型的数据 两个核心函数: 交换函数,这里传参传的分别是两个元素的地址和每个元素的类型大小(字节为单位);...函数依然是回调函数;
前言: 在C语言中,大小写字母相互转换是一个常见的操作。本文将详细介绍C语言中实现大小写字母相互转换的各种方法,并附上代码示例。...一、使用tolower()和toupper()函数 C语言标准库提供了tolower()和toupper()两个函数,分别用于将大写字母转换为小写字母,以及将小写字母转换为大写字母。...这两个函数的原型如下: int tolower(int c); int toupper(int c); 其中,c表示要转换的字符。...,可以用于大小写字母的转换。...", str); return 0; } 总结,在C语言中实现大小写字母相互转换有多种方法,包括使用tolower()和toupper()函数、使用位操作以及使用字符串操作函数等。
✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改 ---- 文章目录 了解关键字分类 关键字及其说明 理解变量、定义与声明...三个关键字 最宽宏大量的关键字- auto 变量的分类——补充内容 变量的作用域—— 补充内容 变量的生命周期——补充内容 auto 相关 最快的关键字—— register 最名不符实的关键字 —static...修饰变量 结语 了解关键字分类 C语言一共多少个关键字呢?...一般的书上,都是32个(包括本书),但是这个都是 C90(C89) 的标准。其实 C99 后又新增了5个关键字。...不过,目前主流的编译器,对 C99 支持的并不好,我们后面默认情况,使用 C90 ,即认为32个 关键字及其说明 auto 声明自动变量 short 声明短整型变量或函数 int
关键字的分类 C语言一共多少个关键字呢?一般的书上,都是32个,但是这个都C90(C89) 的标准。其实 C99 后又新增了5个关键字。...不过,目前主流的编译器,对 C99 支持的并不好,默认使用 C90 ,即,认为32个。...return 子程序返回语句(可以带参数,也可不带参数)循环条件 一、最宽宏大量的关键字 - auto 作用:一般在代码块中定义的变量,即局部变量,默认都是auto修饰的(auto一般默认修饰局部变量...,程序运行的整个生命周期内,该变量一直都有效 二、最快的关键字 - register 作用:尽量将所修饰变量,放入CPU寄存区中,从而达到提高效率的目的 补充内容:CPU主要是负责进行计算的硬件单元,...因为不需要从内存里读取数据了 其实该关键字,不用管,因为现在的编译器,已经很智能了,能够进行比人更好的代码优化 三、最名不符实的关键字 - static 作用:修饰变量和函数 注: 全局变量,是可以跨文件
常见关键字 思维导图: 思维导图 https://img-blog.csdnimg.cn/949c9c17b8b240118c4afaf56aa92e6c.png?...shadow_50,text_Q1NETiBA5a2m5aW9Y-ivreiogOeahOWwj-eOi-WQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16 c语言中...static关键字的三总用法 1.用于局部变量的修饰符; 2.用于全局变量的修饰符; 3.用于函数的修饰符。...typedof 2.定义常量使用define #define SIZE 10 //定义标识常量 寄存器关键词:register 寄存器 优点 1.速度快 2.造价高 3.空间小 寄存器是集成到CPU上的!
✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 ---- 感谢您的点赞与关注,同时欢迎各位有空来访我的平凡舍 --...-- 前面,我们通过这一篇博客关键字 对我们前面学过的关键字进行了一些内容的补充拓展,同时,认识学习了我们3个不太常用的关键字,老规矩,现在,通过这一篇新的博客——我们仍然对关键字这块的相关内容进行一些补充拓展...所以,C语言中,为什么会有这么多的类型?就是为了满足不同的计算场景。...深入理解C 中 的bool类型 C语言有没有bool类型❓ c99之前,主要是c90是没有的,目前大部分书,都是认为没有的。因为书,一般都要落后于行业。...(以后在语言 编程层面上,凡是直接使用和平台强相关的内容,我们都不推荐 总结: 优先使用c90,就是我们之前以及后面一直用的方式 万一非得使用bool,推荐c99标准,不推荐MS自定义。
目录 前言 回调函数 回调型计算器 回调冒泡排序(模拟qsort库函数) qsort函数原型 compar参数 代码演示 冒泡排序(bubble_sort) ---- 前言 ---- 本文主要讲解 回调函数的理解...回调实现计算器 qsort各种功能的使用 冒泡排序各种功能的实现 回调函数 ---- 定义 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针(地址)作为参数传递给另一 个函数,...当这个指针被用来调用其所指向的函数时,我们就说这是回调函数 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应 示例1: 回调型计算器...[0]), sizeof(ch[0]), cmp_char); for (int i = 0; i < sizeof(ch) / sizeof(ch[0]); i++) { printf("%c..., sizeof(ch[0]), cmp_char); for (int i = 0; i < sizeof(ch) / sizeof(ch[0]); i++)//打印 { printf("%c
概念: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。...回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用,用于对该事件或条件进行响应。...观察这部分冗余的代码,发现这4行除了传递的函数不一样,其余都一致,因此我们可以封装一个函数,用函数指针作为参数,调用回调函数实现!...我们只需要将运算法则的函数传入Cal里面,这时,各种运算法则的函数就是回调函数,Cal函数会在特定的条件去调用这些回调函数。...问题一: 比较大小时,不能单纯使用大于,小于,考虑到结构体的因素。 解决方式: 运用到我们的自定义比较函数,然后用回调函数去调用。
C89 / ANSI C 1989年,由ANSI发布,32个 auto break case char const continue default do double else enum extern...register return short signed sizeof static struct switch typedef union unsigned void volatile while C89...C90 1990年,被ISO和IEC采纳,ISO/IEC 9899:1990 C99 ISO/IEC 9899:1999,新增5个 inline restrict _Bool _Complex _Imaginary...C11 ISO/IEC 9899:2011,新增7个 _Alignas _Alignof _Atomic _Static_assert _Noreturn _Thread_local _Generic
_CSDN博客 欢迎各位→点赞 + 收藏⭐️ + 留言 系列专栏-【C语言】关键字_謓泽的博客 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 ⑩② extern ⇿ 外部声明...test.c 文件 #define _CRT_SECURE_NO_WARNINGS 1 #include extern Add(int x, int y); int main(void...{ int x = 20; int y = 30; int ret = Add(x, y); printf("ret = %d\n", ret); return 0; } Add.c文件...拓展⇢一般来说用包括的是C语言当中的头文件或者是库函数当中的头文件," "是自己使用自己所自定义的头文件[约定俗称的规矩],实际上.c源文件,我们只需要在.h头文件当中加上去就可以了。...,一句话『声明并没有开辟空间』 模块化extern的使用 说明↔通过上述代码可以证明变量和函数是可以进行跨文件的访问的。
_CSDN博客 欢迎各位→点赞 + 收藏⭐️ + 留言 系列专栏-【C语言】关键字_謓泽的博客-CSDN博客 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 ⑤ const ⇿...那么举个例子吧(生活当中的一些依据)有些数据是可变的比如我们的年龄、工资等...那么有些数据是不能变的,你的亲生父母、血型等等...那么如果我们要用C语言描述的话就有这两个知识点常量 const 和变量了...拓展知识点⇢原因是在不同的编译器下对于C语言的支持标准都是不一样的。有的是基于支持标准C语言并且是可以在特定的平台下做扩展的。所以我们需要尽可能地保证使用标准C语言在这样子跨平台就显现出来它的好处了。...[const]修饰数组⇢在C语言中 const 还可以修饰数组,示例代码如下 const int Array[] = {1,2,3,4,5,6,7,8,9,10}; int const Array[]...注-在C语言用 const 修饰指针注意以下两点如下。 ⒈用来限定指向空间的值是不可修改的。 ⒉限定指针式不可修改的。
_CSDN博客 欢迎各位→点赞 + 收藏⭐️ + 留言 系列专栏-【C语言】关键字_謓泽的博客-CSDN博客 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 ④ char...⇨ 字符数据在内存中存储的是字符的 ASCll 码,即使是一个无符号整数,其形式与整数的存储形式一样,因为在C语言的字符型数据与整形数据之间通用。...⒋实际上字符型是被称之为整形字符类型('单引号')如果不相信的话,你可以用sizeof关键字求下单引号字面值、常量看下它所在的字节大小是不是一个整形(④字节)的。...⒌拓展知识点 ⇨ 相信学习过C++语言的小伙伴应该知道在C++语言当中它还是一个字节的。...-字符也是区分大小写的。
什么是井字棋 井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。...游戏需要的工具仅为纸和笔,然后由分别代表O和X的两个游戏者轮流在格子里留下标记(一般来说先手者为X),任意三个标记形成一条直线,则为获胜。...井字棋所要包含的内容 基本框架 我们把该游戏分为逻辑的测试和游戏的实现,分别用两个源文件和一个同文件来实现。...col) { int i; for (i = 0; i < row; i++) { int j; for (j = 0; j < col; j++) { printf(" %c...if (is_full(board, row, col) == 1) { return 'Q'; } //继续 //没有玩家或者电脑赢,也没有平局,游戏继续 return 'C'; }
_CSDN博客 欢迎各位→点赞 + 收藏⭐️ + 留言 系列专栏-【C语言】关键字_謓泽的博客-CSDN博客 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 ⑨ double ⇿...双精度浮点型 ⒈描述⇢双精度浮点类型的使用关键字是 double,它在内存中占用的是⑧个字节。...明明在实际的值当中并没有出现过1的这个数字阿,按理来说不会这也阿。 解答-张三同学你发现的这个问题我们就把它称之为四字『精度损失』。...从理论的角度上来说它打印出来的值因该是全0的数字的,那么想要知道为什么是这个样子的我们就需要了解一个概念就是数据的存储。...数据存储这里就不详细的介绍了,在博主的[C系列]有篇文章当中有并且讲的非常的详细。
_CSDN博客 欢迎各位→点赞 + 收藏⭐️ + 留言 系列专栏-【C语言】关键字_謓泽的博客-CSDN博客 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 ⑥ continue... ⇿ 跳 回 ⒈描述 ⇨ 在C语言当中的 continue 和 break 语句是有一些类似的,但是它并不是强制进行终止的。...这是 continue 和 break 语句最本质的区别,也是我们去学习 continue 关键字的重点。虽说它没有 break 语句那么被经常使用,但是在一些场合特定的情况它的作用是很大的。...所以,千万不要去小巧它哟(●'◡'●) ⒉作用 ⇨ 结束本次的循环,即跳过本次的循环体中尚未执行的部分,执行下一次的循环操作,这就是 continue 和 break 语句的最大区别。...⒊注意 ⇨ 很多刚学C语言初学者可能会不明白这两个关键字 continue 语句和 break 语句,其实这两个语句本质上都是非常容易理解的。
union 关键字的用法与struct 的用法非常类似。...在C++里,union 的成员默认属性页为public。union 主要用来压缩空间。如果一些数据不可能在同一时间同时被用到,则可以使用union。...上述问题似乎还比较简单,那来个有技术含量的:请写一个C 函数,若处理器是Big_endian 的,则返回0;若是Little_endian 的,则返回1。...参考答案如下: int checkSystem( ) { union check { int i; char ch; } c;...c.i = 1; return (c.ch ==1); } 现在你可以用这个函数来测试你当前系统的存储模式了。
_CSDN博客 欢迎各位→点赞 + 收藏⭐️ + 留言 系列专栏-【C语言】关键字_謓泽的博客-CSDN博客 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 ⑦ default ...代码示例演示如下① #include int main(void) { int i = 3; switch (i) { case 1: printf("C1");..."); case 2: printf("C2"); } return 0; } 运行结果 謓泽C1C2 代码解释-这个代码和上面一个代码很像只不过改变了 default 关键字的位置...,当 case 不匹配的时候执行 default的时候。...我们需要注意一点不是执行 default 关键字就就退出了,它依旧会执行下面的语句,因为这个代码 default 语句在 case 语句的前面。
领取专属 10元无门槛券
手把手带您无忧上云