
图书翻译
Love_Lei
通信设备软件工程师,擅长于c/c++、Linux、VxWorks、嵌入式、通信等技术领域。喜欢广泛关注IT界和通信界的各类技术和新闻。爱好旅游和各类户外运动。(新浪微博:@肖翔Michael)
展开
-
2.1 指针基础
2.1 指针基础回想一下,一个指针其实只是一个变量,它存储数据在内存中的地址而不是存储数据本身。也就是说,指针包含内存地址。很多时候,即使是有经验的开发人员都很难去形象表达这种不太直观的数据关系,特别是在处理类似于指向其它指针的指针这种更复杂的指针结构时就尤为明显了。因此,用来理解指针的最好方法之一就是绘制图表(见图2.1)。指针通常都是按位置用箭头一个一个连接起来,而不是在图表中画出实际的地翻译 2011-12-23 09:59:32 · 1003 阅读 · 0 评论 -
第二章 指针操作
第二章 指针操作 在C语言中,对于任何类型T,我们都可以在T所在的内存地址处产生一个包含此对象地址的相对应的变量。如果用比较直观方式来看待这种变量,它们实际上是一种指向对象的变量,因此,这些变量被称之为指针。在C语言中指针的重要性不言而喻,但在很多时候指针被又被认为是一把双刃剑。一方面,指针是构建数据结构和操作内存的精确而高效工具。另一方面,它们又很容易被错误地使用,从而产生不可预知的软件bu翻译 2011-12-23 09:29:45 · 1134 阅读 · 0 评论 -
2.8 相关主题
2.8 相关主题C++一种面向对象的语言,它遵从了很多软件工程中所要求方法。例如:C++支持数据类型的构造和析构。这种机制为类型的实例化提供了一种更好的内存管理方法,从而避免了在C语言中经常出现的内存泄漏和指针相关的问题。 基于堆的内存分配在C语言中,这种内存分配指用malloc和realloc分配的内存空间。基于堆的内存分配通常也称作动态存储分配。它允许一个程序在运行时请求更多所翻译 2012-01-04 16:21:04 · 1099 阅读 · 1 评论 -
2.6 函数指针
2.6 函数指针函数指针是指向可执行代码段或调用可执行代码段的信息块的指针,而不是指向某种数据的指针。函数指针将函数当作普通数据那样存储和管理。函数指针有一种固定的形式,就是包含一个确定的返回值类型和若干个函数参数。声明一个函数指针看起来与声明一个函数非常类似,只是在函数名之前有一个表示指针的*,并且函数名和星号会用小括号括起来。例如在下面一段代码中,match被声明为一个函数指针,它接收两个翻译 2012-01-04 16:05:41 · 1192 阅读 · 0 评论 -
2.5 泛型指针与类型转换
2.5 泛型指针与类型转换回想一下,在C中指针变量拥有与其它变量一样的类型。之所以指针变量会有类型是因为当我们想获取指针变量的值时,编译器已经知道指针所指向的数据的类型,从而可以访问相应的数据。但是,有些时候我们并不关心指针所指向的变量的类型。在这种情况下,我们就是可以使用泛型指针,泛型指针并不变量指定具体的数据类型。2.5.1 泛型指针通常情况下,C只允许相同类型的指针之间进行转换。翻译 2012-01-04 15:48:16 · 3782 阅读 · 4 评论 -
2.4 作为函数参数的指针
2.4 作为函数参数的指针在C语言的函数调用中指针起着至关重要的作用。最重要的是指针支持将参数作为引用传递给函数。参数作为引用传递时,当函数改变此参数,那么这个被改变参数的值会一直存在,甚至函数退出后都仍然存在。相对而言,参数作为值传递时,此时值的改变只能持续到函数返回时。无论是否要改变函数的输入输出参数,我们用传引用的方式来传递大容量复杂的函数参数都是十分高效手段。这种方法高效的原因就在于,翻译 2011-12-27 20:29:44 · 1944 阅读 · 2 评论 -
第三章 递归
第三章 递归递归是一种强大的方法,它允许一个对象以其自身更小的形式来定义自己。恐怕没有什么比观察神秘的自然界中出现的递归现象更好的方法来体会递归的重要意义了。想想蕨类植物的叶子,每片叶子的小枝干都是整片叶子的较小缩影;又或者两个反光的物体,相互映射对方的渐远的影像。这样的例子使我们明白尽管大自然的力量是强大的,在许多方面它那种出乎意料的简洁更让我们觉得优美。同样的道理也可用在递归算法上,从很多翻译 2012-02-09 10:52:53 · 1200 阅读 · 0 评论 -
2.7 问与答
2.7 问与答问:使用指针的困难之一是,我们往往会错误的使用它,并且这种错误不是发生在编译时,而是发生在运行时。下列几段代码,哪些会造成编译时错误,哪些会造成运行时错误,为什么?a)char *sptr = "abc",*tptr;*tptr = sptr;b)char *sptr = "abc",*tptr;tptr = sptr;翻译 2012-01-04 16:17:00 · 1609 阅读 · 2 评论 -
2.2 存储分配
2.2 存储分配当在C中声明一个指针时,与声明其它类型的变量类似,一定量的存储空间会分配给这个指针。通常情况下指针会占用一个机器字长的存储空间,但有些时候它们的大小也有所不同。因此,为了保证代码的可移植性,我们不应该假设每个指针都占有一个特定大小的存储空间。指针变量的大小通常与编译器的设定以及某些特定的C实现中的类型界定符有关。必须要记住的一点是:当我们声明了一个指针,仅仅只是为指针本身分配了翻译 2011-12-23 11:20:04 · 1125 阅读 · 0 评论 -
1.3 小酌软件工程
1.3 小酌软件工程本章开头曾经提到过,对数据结构和算法的理解在开发软件时是非常重要的。与其同等重要的是在我们的开发工作中应用一些软件工程中的良好准则。软件工程是个很广的主题,但从一些思想和概念中我们可以得到很多收获。这里就介绍一些相关的主题并将这些思想运用到全书中。模块化 在软件设计中为了达到模块化的目的,一种方法是将精力集中在黑盒上。在软件开发中黑盒代表一个模块,它的翻译 2011-12-20 14:47:15 · 1128 阅读 · 0 评论 -
1.4 如何使用本书
1.4 如何使用本书本书根据需要可当作教材或参考书使用。全书组织为3个部分。第1部分包括介绍性内容,也包含了关于指针操作、递归以及算法分析的章节。这些主题对阅读本书其余章节起帮助性的作用。第2部分引入了基本的数据结构,包括链表、堆栈、队列、集合、哈希表、树、堆、优先级队列以及图。第3部分引入了解决问题的常用算法,包括排序、查找、数值分析、数据压缩、数据加密、图论以及几何计算。第2和第3部分翻译 2011-12-20 14:48:50 · 1520 阅读 · 2 评论 -
1.2 算法简介
1.2 算法简介算法是定义良好的用来解决问题的步骤。在计算机科学领域算法是必不可少的,因为它们正是计算机完成系统操作所需要的具体步骤。好的算法就如同好的工具一样,以合理的付出完成相应的工作。使用不当的或定义不清的算法就像用台锯去切割一张纸,或者用剪刀去切夹板一样:尽管工作也许能完成但你不得不考虑完成工作的效率。和数据结构一样,使用算法也有3个原因:效率,抽象,重用性。效率翻译 2011-12-20 14:42:05 · 1302 阅读 · 0 评论 -
2.3 数据集合与指针的算术运算
2.3 数据集合与指针的算术运算指针在C语言中最常见的用途就是用来引用数据集合。数据集合是由多种相关联的基础数据构成的数据体。C语言支持两种数据集合:结构和数组。(虽然联合与结构类似,但一般它单独被归为一类)2.3.1 结构结构通常是由各种各样的有序的基础数据组成的,从而它可以被看作一个单一而连续的数据类型。结构指针是构建一个数据结构的重要组成部分。结构使我们能把数据捆绑在一起,指针使翻译 2011-12-26 11:01:10 · 1617 阅读 · 1 评论 -
1.1 数据结构简介
1.1 数据结构简介数据有各种形式和大小,但通常它们可以以相同的方式来组织。比如,设想有一张清单,上面列出了需要做的事情,配方中的成分列表,某门课程的阅读清单。尽管每种都包含不同类型的数据但它们包含的数据都以一种相似的方式进行组织:列表。列表是一种简单的数据结构。当然,同样还有许多其他类似的方法来组织数据。在计算机科学领域,一些最常用来组织数据的方式有:链表,堆栈,队列,集合,哈希表,树,堆,翻译 2011-12-20 14:34:22 · 1192 阅读 · 0 评论 -
第一章 介绍
第一章 介绍12岁那年我和我的哥哥一起学习弹钢琴。每周我们都要到老师家去上课,当我们中的一个在上课时另一个人需要在客厅等着。幸运的是,老师每次都在咖啡桌上安排一些游戏帮我们打发等待的时间。我记得其中一个游戏里有一小片插上钉子的木板。当时我并不知道,但这个游戏的确可以用来对数据结构和算法做初步的介绍。游戏规则是这样的:除了一个蓝色的夹子外,其他夹子都是白色的。刚开始游戏时拿掉其中一个白色夹子翻译 2011-12-20 11:29:21 · 1671 阅读 · 2 评论 -
关于书籍“Mastering Algorithms with C”的翻译
Mastering Algorithms with C 作者: Kyle Loudon出版社: O'Reilly出版年: 1999-08-05页数: 560定价: USD 39.95装帧: PaperbackISBN: 9781565924536 这是一本经典的关于C语言的数据结构和算法的书籍,年代比较久远了,但里面的内容完全没有过时。对于学生和刚工原创 2011-12-19 17:02:40 · 3197 阅读 · 5 评论