- 博客(70)
- 资源 (5)
- 收藏
- 关注
原创 【C解析之十二】C语言 printf 的秘密
C解析之十二printf函数的秘密 前言:从C语言的第一个程序Hello World开始,到目前所写的几乎所有C程序都有它的出场,它便是: 标准化输出函数printf。printf超高的出场率让人习以为常,似乎printf函数的独特性也不被人所注意。 1.变长参数:不可思议 你可能没有注意:printf函数的参数是变长参数
2014-04-07 15:32:18 5562 6
原创 【每日一C之十三】C 语言inline内联函数
每日一C之include 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:C语言inline内联函数的设立初衷与用法 初衷:引入inline内联函数的目的:减少函数调用的开销。在函数返回值前加限定词inline,编译器会在源文件适当的位置生成函数代码的副本,以避免函数调用。函数角度来看,相比inline,宏虽同样能
2014-04-07 13:03:22 3791 2
原创 【每日一C之十二】指针与引用的区别
每日一C之指针与引用 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:指针:一个数据对象的地址与引用:一个数据对象的别名之间的区别 区别: 1. 空值:指针可以为空,悬空指针问题由此而来;引用无法为空,只有存在的数据对象才有别名。 2. 改变:指针可以更改;引用(别名)则不能易主
2014-04-05 20:34:45 6708 8
原创 【每日一C之十一】C语言volatile
每日一C之volatile 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:C语言volatile用于避免因编译器优化导致的错误。 CPU访问内存的速度远快于访问设备地址,访问寄存器速度又快于内存,为了提高程序的运行速度,编译器会对程序进行优化。如: buffer=Read(0xEE);
2014-04-03 21:51:48 3764 3
原创 【每日一C之十】const与define区别
每日一C之const与define区别 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:不得不提,设立const关键字的目的:取代define,消除define缺点的同时继承其优点。 就定义常量而言的区别: 1.作用层次不同: define作用在文本层次,在预处理阶段单纯在文本上的替换
2014-04-02 21:52:20 4781 1
原创 【每日一C之九】C语言const用法
每日一C之C语言const用法 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:C语言const能在一定程度上提高程序的安全性与可靠性。 1.const修饰只读变量:const 数据类型 变量名 如 const int a = 10 ; const修饰后,变量成为只读
2014-04-02 20:35:24 3378 1
原创 【每日一C之八】C语言static用法
每日一C之static用法 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:C语言static的用法与static修饰变量的空间存储特征。 要点: static在C中主要有两个作用,一修饰作用域;二修饰生存期 1.static修饰全局变量:修饰作用域
2014-04-01 19:07:55 4140 1
原创 【每日一C之七】union共同体及判断系统大小端
每日一C之union共同体 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:C语言union共同体的空间存储及用法。union共同体用法: union 共同体名称 { 数据类型 成员数据;
2014-03-31 14:04:02 6213 5
原创 【C解析之十一】类-集万千宠爱于一身
C解析之十一类 前言:类是当今主流程序设计方法-面向对象的核心机制。面向对象技术,一切皆对象,将现实世界的事物抽象成对象,面向对象是计算机编程语言发展到相当阶段的产物,能有效提高编程效率,能以更符合人类理解的方式实现对复杂系统的分析与设计。 1.理解类的本质: 类是面向对象程序设计中对具有相同性质对象的抽象,封装了该对象的数
2014-03-30 16:48:55 7317 13
原创 【每日一C之六】new 与 malloc
每日一C之new与malloc 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:C/C++中new/delete与malloc/free小辨析 区别: 1.new/delete是C++运算符,malloc/free是C函数。 2.new同时调用构造函数,d
2014-03-30 12:05:35 4223 1
原创 【每日一C之五】C静态库与动态库
每日一C之C静态库与动态库 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:C语言的静态库与动态库对比分析,各有长短 库: 指由标准常用函数编译而成的文件,旨在提高常用函数的可重用性,减轻开发人员负担。常用的sdtio.h,math.h等库便是C函数库的冰山一角。 1.静态库
2014-03-29 13:35:16 4375 4
原创 【每日一C之四】C语言#预处理
每日一C之C语言#预处理 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:预处理,又称预编译,是源代码.c到执行.exe的第一步处理。 1.文件包含:#include,预处理会用stdio.h文件的内容 替代这一行。 2.宏展开:#define定义的宏,预处理
2014-03-29 12:07:42 3326
原创 【每日一C之三】struct字节对齐方式
每日一C之struct字节对齐方式 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:结构体struct是多个相互关联数据的集合,这些数据以整体形式存储在内存。struct A{ char a; //char占1个字节 int b; //int 占4个字节 short c; //
2014-03-28 19:14:55 5321
原创 【每日一C之二】sizeof 与 strlen
每日一C排序之sizeof与strlen 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:C语言sizeof与strlen的区别 1. sizeof是操作符,strlen是库函数。 2. sizeof的参数可以使数据类型,变量,对象,结构体,数组等,返回其
2014-03-28 13:10:38 4959
原创 【每日一C之一】included<>与include""
每日一C排序之include 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。 今日贝壳:C程序 #include 与#include"stdio.h" 的区别 1. #include引用的是编译器的类库路径里面的头文件: 2. #include" "引用的是程序目录里相对路
2014-03-27 23:46:00 5426 5
原创 【算法-排序之五】选择排序
算法-排序之选择排序 优秀的排序算法有快速排序,希尔排序等,但在生活中,选择排序却是人们最爱选择,最可能使用的方法。因为,选择排序简单明了,效果明显,在处理小规模排序时,选择排序是个不错的选择。 1. 选择排序SelectSort(): 核心:每次选出最小的数放在选区最前位置。如图示:
2014-03-26 23:55:20 6760 9
原创 【算法-排序之四】希尔排序
算法-排序之希尔排序 希尔排序得名于其设计者设计者希尔(Donald Shell),设计体现了计算机领域的“分治法”思想。在众多排序算法中,目前而言,希尔排序是唯一能在效率上与快速排序(【算法-排序之二】快速排序)一较高低的算法,目前只有这两种排序算法的时间复杂度突破O(n2)。值得一提的是,希尔排序与快速排序都基于“分治法”,从这里或许可以解释这两种排序算法在效率上的得天独
2014-03-25 20:56:26 11055 2
原创 【C解析之十】链表进阶
C解析之十链表进阶 前言:链表可以更好的适应实时变化的存储需求,具有无限的扩展性,然而你并不需要担心是否有足够连续的内存。下面将介绍链表的核心操作:插入,删除,查询,掌握这些操作,链表便可在你的程序中大放光彩啦。 1.链表的插入:将新的节点插入到链表指定的位置。 如下图: 等待
2014-03-25 17:01:12 6473 6
原创 【C解析之九】链表初探
C解析之九链表初探 前言:链表可以更好的适应实时变化的存储需求,具有无限的扩展性,然而你并不需要担心是否有足够连续的内存。 1.链表的优势:连续内存约束:数组的内存必须是连续的,当存储数据量达到一定程度,开辟数组空间可能面临一个严重的问题-内存中找不到足够大的连续内存。链表不需要连续的内存,它可以将零散的内存串起来,不断的延伸表的长度。插
2014-03-22 19:29:56 5526 2
原创 【C解析之八】 动态内存管理
C解析之八动态内存管理 前言:动态内存管理,C/C++迷人的魅力所在,只因,它可以让你对计算机的操控上升到近乎无限的程度。 动态内存管理和指针,实现C/C++对内存的精准操控,这一特征让C/C++程序在空间消耗上的表现异常突出,一定层面上可以解释为什么C是底层系统开发语言的首选。大到操作系统任务,小到一个通讯录,都可以发现动态内存管理,如果你深入研究还会发现,动
2014-03-21 19:30:43 8989 2
原创 【C解析之七】文件进阶
C解析之七文件进阶 前言:记忆如何写入文件,如何从文件中提取记忆。 文件的读/写是最常用的文件操作,C语言标准函数库提供了多种文件读写函数,分别在字符,字符串,数据块三个层面上的读写操作,适应不同的文件读写需求。 1.字符读写函数: 1.1读字符函数fgetc,从指定文件中读取一个字符,助记符为(
2014-03-19 13:29:36 11438 12
原创 【C解析之六】文件初探
前言:我们用最美的记忆勾勒最美的画面,文件是程序的记忆。 当程序在内存中消亡时,文件便是程序记忆的载体。也许你发现一个懊恼的问题,每次打开你写的程序,它便什么也忘了,忘了你曾经辛苦输入的数据,但这不是它的错,它记不住任何东西,甚至自己。那么,是时候让程序有点记忆了。
2014-03-17 23:50:13 8486 2
原创 【C解析之五】函数:你不知道的事
前言:关于函数,你不知到的那些事。 C语言程序由多个函数组成,所有函数具有平行性,这意味着函数内部不能再定义函数。函数带来一大串问题,全局变量与局部变量是什么?它们的作用域与生存期有何不同?实际参数与形式参数又有何不同?为什么形式参数只有在被调用时才分配内存?返回值如何传递......在很多书上都可以找到答案,但...问题是,很少有书给予了让人满意的解释。 深度解析函数内幕.
2014-03-16 15:55:59 9274 6
原创 【C解析之四】指针
C解析之四指针 前言:指针可以这么学。 在很多初学者而言,C/C++指针是一场灾难。C作为底层编程语言的首选,得益于其灵活的指针,使程序员在极大程度上可以直接操控内存,这在比如操作系统的实现上显得必不可少。然而过于灵活的指针有让人担忧的另一面,不当的使用指针访问未定义空间引发不可知错误,篡改系统安全空间导致系统瘫痪等隐患,犹如挥之不去梦魇。
2014-03-15 14:39:24 8937 4
原创 【算法-排序之三】插入排序
算法-排序之插入排序 插入排序是一种简单的排序算法,这是一种从小范围到大范围的递归思想,这种思想类似于数学推导中的递归,首先在最小规模n(1个数的队列)满足要求,再考虑n+1时需要的操作,递归直到最终的结果。当问题规模很大无从下手时,在问题最小规模点思考,然后逐渐递加,不是为一个很好的选择。 1.插入排序InsertSort 核心:以
2014-03-14 11:51:20 7129 6
原创 【算法-排序之二】快速排序
算法-排序之快速排序 快速排序得名于实际应用的高效率,它几乎是最快的排序算法,入选20世纪十大算法之列。快速排序体现了计算机设计的“分治法”思想,核心是将整个问题分割成多块相对容易处理的小问题,分而治之。利用分治法原理的排序算法,还有希尔排序算法等等。 1.快速排序QuickSort 核心:如果你知道多少人该站你前面,
2014-03-13 21:09:14 17127 23
原创 【算法-排序之一】冒泡排序
算法-排序之冒泡排序 如果数据按照一定的顺序进行排序,数据处理的效率将显著的提高。算法是编程的精髓,一个高效而合适的算法能极大的减少时间消耗与空间消耗,提到“合适”是因为没有哪个算法可以在所有情况下都表现出色,同样是排序,在不同数据规模下各种排序算法有不同的效能表现,选择合适的解决算法的才能最大限度地提高效率。 1.冒泡算法BubbleS
2014-03-12 21:24:25 11124 9
原创 【C解析之三】C语言的内存分配
和你谈谈C系列之三运行时内存分配 前言:这里展示C与计算机的思考方式,从C语言设计者的角度看C。 C语言的内存是让很多初学C编程的同学感到混乱与头疼的问题,受此困扰很难对C有清晰全面的把握,打击学习的积极性。然而,一般基础教材对C运行时内存往往避而不谈,高级参考资料的长篇大论同样让人抓不住要点。接下来,我就给各位同学解开C语言运行时内存的面纱。
2014-03-12 14:20:35 10953 5
原创 【C解析之二】数据类型进阶
和你谈谈C系列之二数据类型进阶 前言:这不是C语言的参考手册,这里展示C与计算机如何思考,以C的思维叫你读懂C。 在【和你谈谈C系列之一】数据类型中提到建立于基础数据类型之上的数据类型,现在我就给大家介绍一下常见的这类数据:1.数组 2.结构体 1.数组 你知道要定义一个数,比如 in
2014-03-11 20:56:03 8535 8
原创 【C解析之一】数据类型
和你谈谈C系列之一数据类型 前言:这不是C语言的参考手册,我们说的是C与计算机如何思考,以C的思维解读C。 相信大家都听过:程序=数据结构+算法。通俗的说,当你编程时无非是在做两件事:一用code写下你需要计算机所做的操作(相当于算法),二为计算机的操作准备操作对象(相当于数据结构)即数据。 如图: 现在你或许体会到了数据在程序中的
2014-03-10 17:32:44 9056 6
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人