2012年9月17日
摘要: 关于typedef的使用,我们的教科书,真神奇,竞然只给出了一个很模棱两可的定义与几个简单使用的例子,先不感叹作者的负责与不负责,至少这样的教科书会对我们造成很多的困扰,最近在使用typedef时,想仔细看个究竟,国内的网络真是太强大了,千篇一律的转载,没一个能看懂的,难道我的理解力有问题?基础的用法都说得清楚,因为教材上也是这样说的,至于更深层次的,似乎都是遮遮掩掩,没几个说清楚的,包括某著名搜索引擎,其实找来找去原来都是从那转载过去的,可见国内网络上的有些东西是很不负责任的,作者纯粹为发博客而博客。因此,很多初学者对其的理解仅仅局限于:typedef主要用来定义一个已有类型的“别名(al. 阅读全文
posted @ 2012-09-17 18:09 竞击 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 有穷状态机的形式定义有穷状态机是一个五元组 (Q,Σ,δ,q0,F),其中:Q是一个有穷集合,称为状态集。Σ是一个有穷集合,称为字母表。δ: Q xΣQ称为状态转移函数。q0 是初始状态。F 是接受状态集。教科书上是这样定义有穷自动机的,这个形式定义精确的描述了有穷状态机的含义。但是大部分人(包括我自己)第一次看到它时,反复的读上几遍,仍然不知道它在说什么。幸好通过一些实例,我们可以很容易明白有穷状态机的原理。自动门是一个典型的有穷状态机:它有“开”和“关”两种状态,这就是它的状态集,也就是上面所说的Q。人可以从自动门进来或出去,当人进来或出去的时候,自动门会自动打开,如果在规定的时间内没有 阅读全文
posted @ 2012-09-17 13:34 竞击 阅读(741) 评论(0) 推荐(1) 编辑
摘要: 用有穷状态机解一道面试题。刚毕业的时候,我到一家外企面试,面试题里有这样一道题:统计一篇英文文章里的单词个数。有多种方法可以解这道题,这里我们选择用有穷状态机来解,做法如下:先把这篇英文文章读入到一个缓冲区里,让一个指针从缓冲区的头部一直移到缓冲区的尾部,指针会处于两种状态:“单词内”或“单词外”,加上后面提到的初始状态和接受状态,就是有穷状态机的状态集。缓冲区中的字符集合就是有穷状态机的字母表。如果当前状态为“单词内”,移到指针时,指针指向的字符是非单词字符(如标点和空格),那状态会从“单词内”转换到“单词外”。如果当前状态为“单词外”, 移到指针时,指针指向的字符是单词字符(如字母),那状 阅读全文
posted @ 2012-09-17 13:31 竞击 阅读(786) 评论(0) 推荐(0) 编辑
摘要: 上面我们看了只有中间两个状态的状态机,现在我们来看一个稍微复杂一点的状态机。INI文件是Windows下常用的一种配置文件。它由多个分组组成,每个组有多个配置项,每个配置项又由名称和值组成。文件里还可以包含注释,注释通常以‘;’(或‘#’)开始,直到当前行结束。如XP下的win.ini: 1 ; for 16-bit app support 2 [fonts] 3 [extensions] 4 [mci extensions] 5 [files] 6 [MCI Extensions.BAK] 7 aif=MPEGVideo 8 aifc=MPEGVideo 9 aiff=MPEGVideo10 阅读全文
posted @ 2012-09-17 12:55 竞击 阅读(531) 评论(0) 推荐(0) 编辑
摘要: XML(Extensible Markup Language)即可扩展标记语言,也是一种常用的数据文件格式。相对于INI来说,它要复杂得多,INI只能保存线性结构的数据,而XML可以保存树形结构的数据。先看下面的例子:1 <?xml version="1.0" encoding="utf-8"?>2 <mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="all/all">3 <!-- 阅读全文
posted @ 2012-09-17 12:47 竞击 阅读(811) 评论(0) 推荐(0) 编辑
摘要: C永远有着那么多你所不知道的东西,最近在Coding的时候,发现对于指针,我还是没有琢磨好。碰到这么一个问题,看代码如下:View Code 1 int a; 2 3 address(int *m) 4 { 5 m = &a; 6 } 7 8 main() 9 {10 int *p;11 12 address(p);13 }这里只是为说明问题,将代码简化了,上面的代码有很大的问题,在main函数中,将指针做为实参传递给形参,这样可以吗?很显然,这是不可以的,这样传递的只是实参的一个拷贝而已,真正的实参并没有传递过去,所以,address调用完毕以后... 阅读全文
posted @ 2012-09-17 12:07 竞击 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 互联网时代,其实信息开始越来越透明,假如你对中国的大学教育不满意,你可以FQ看国外大学的课程,一个朋友分享他收集的各个国外大学开放式教育资料的论坛地址,觉得很好,如果你们有好的学习资料,可以补充,可以一起合并到这篇文字中。这个世界阻碍你学习的,不是世界,而是你自己!一个可以在线观看和下载世界著名大学授课视频的论坛如剑桥、耶鲁等等http://galaaa.com/?fromuid=12311中国大陆镜像http://www.core.org.cn/cn/中国台湾镜像http://www.myoops.org/一、伯克利加州大学伯克利分校http://webcast.berkeley.edu/c 阅读全文
posted @ 2012-09-17 12:06 竞击 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 最近项目中使用了很多结构体,其中有如下关于结构体的赋值问题:设结构体A,B且,A与B均为同类型的结构体.现假设要想将B的值给A,至于是否可以像A=B这样去赋值,就像普通的变量一样使用查了很多资料,包括谭浩强的教材,几乎都是清一色的说不能这样去赋值,赋值不成功。但是这两天,在具体的编译器上这样去用的时候,却是可以的,和用memcpy一样的效果。刚开始怀疑书上是否有错,后来查了许多资料,原来,只是C语言的版本不同而已,因此,哪怕同一类编译器只要,可能版本的不一样,也可能导致有的程序能编译,有的不能编译。下面,是从维基上摘录的信息,一般新的编译器应该支持最新版本的编译器,所以在用编译器的时候要注意一 阅读全文
posted @ 2012-09-17 12:05 竞击 阅读(625) 评论(0) 推荐(0) 编辑