大家来看看 谭浩强 的代码有没有问题

用版本B调用copy_string, 我在VC6上运行会出错.

谭浩强的代码请看此图片:

大家来看看 谭浩强 的代码有没有问题












回答: 大家来看看 谭浩强 的代码有没有问题

  1. 至于“//这里已经可以使用 x 但是x并没有定义 ”这句话,根本不成立,在使用之前必定要定义,只不过不一定要在此处定义,引此例简直……

    这里你好像分不清 编译期 和 运行期 
    按照你的说法 哪怕 int x = 99; 写在这个位置 也是先定义 
    那么我另外再举一个例子好了 
    #include <stdbool.h>

    int main()
    {
    printf("%d\n", x);
    return 0;
    }
    int x = 99;

    x "先定义"了 但是这段代码无法通过编译 

    我说清楚了吗 
    假如 谭C的说法是正确的
    那么第一段代码中的变量x 是有先定义
    那么第二段代码中的变量x 一样是有先定义
    但是 第一段代码是正常的 第二段代码却是错误的
    于是 谭C的说法是错误的

【讨论】关于谭浩强《c语言程序设计》一书的错误

  1. Q
    本人大学是计算机专业,自然会学编程~~

    当然也和大多数朋友一样,是c语言做的入门语言

    当初刚要学c语言的时候,学校的课本很垃圾,后来听闻c primer plus这本书是入门经典,于是就买来看~~~无奈本人脑子太笨,看不太懂,后来又有朋友推荐谭浩强的书,买来看,觉得简单了许多......自此我就进入了编程的世界.........


    说实话我很清楚如果我只看谭浩强的书,是肯定无法真正入门的,我的学习过程是先看了谭浩强的书,而后看c primer plus......

    但是不知从何时起,网上开始大肆攻击谭浩强的那本书:如何糟糕、错误如何多等等.....

    说实话我并没有印象这本书有那么多的错误.....难道是太久了都忘记了?还是我至今都记着的是错误的概念而不自知?

    我很想知道,因此发了这篇文章

    发这篇文章主要是想让知道的朋友们给我说说这本书的具体的错误~~~~所以发链接什么的就免了,我希望大家能把具体的错误发出来,让我看看~~~~求教育~~~~~~大家一起讨论哈~~~
  2. A
    不要听那些批谭或者赞谭的鬼话。作为入门,谭的这本书还是不错的。

    对于批谭:比如楼上说的“系统描述语言”。当年我看这书的时候,并不太理解这个词语,但现在回头看看,这个词用在C语言上面,也没什么问题。此外,若无关语言规则问题,谭在书中发表一下自己的主观看法(如理想的结构化语言),又有何不可?

    对于赞谭:谭的书,我个人觉得最大的硬伤是比较死板,而且里面的许多用词不是很严谨(这也是导致被攻击的最大原因)。

哪里可以下载 谭浩强、张基温,《C 语言程序设计教程》高等教育出版社的答案,UP者有分。

  1. Q
    哪里可以下载《 C 语言程序设计教程》谭浩强、张基温,高等教育出版社的的习题讲解答案,UP者有分。
  2. A
    http://expert.csdn.net/Expert/topic/1161/1161422.xml?temp=.5415613

四年工作的总结

  1. Q
    2009年,我毕业于某普通一本院校物理系物理专业,我开始从大四自学《C语言》,当时最头疼的是指针,根本学不会,甚至想以后研发软件不用指针,全用数组。算了算,C语言,谭浩强版本,我读了至少5遍,我才打下了C语言基础。

    大四下半年,伴随着次贷危机的尾声,我来到帝都找工作。在万泉庄附近租了一个床位,一个月300元。工作找的及其不顺利,不得不回去答辩,答辩后,我无法忍受已经毕业毕业了但还没有工作的痛苦,觉得自己很失败。平时很爱喝酒的我,并没有留在学校多玩儿几天,像其他人一下,喝得每天烂醉。回到家稍微休整几天,我再次来到北京找工作。后来总算是找到了一家,月薪3000,嵌入式C语言开发。当时我异常兴奋!
    刚开始工作,我觉得很新鲜,和同事相处的也很好,可能我们这里大部分是应届生,一起很合得来。现在想想,还是这家公司滋润,虽然挣得少了些。在这里,我开始恶补计算机基础知识《C++》、《数据结构与算法》、《操作系统》、《计算机网络》、后来因项目需求,我还学习了《C#》和《Java》,这里真是我学习的好地方。公司小,啥都干,却学得多。经过一年半的努力,我觉得我的基础已经不错。工资上调至5000RMB,我很兴奋,但我很想进大公司,超大的公司。

    因此,年底,我不等年终奖下发(再等20几天就发奖金了,我有8000多),选择了一家万人以上企业,月薪1W。在这里,我开始接触正规的项目流程,开始接触产品如何发布,开始使用专业的bug管理,源代码管理软件,觉得这里好专业,觉得自己不是土八路了。呵呵,后来,我发现,我会的很多,但是我不精通。我自己钻研,想把linux C编程学精通。可我发现,自己学习,永远不如项目中学习。在这里,我有没法学得比较深入,因为每个人一个小模块,根本对整个系统不了解,更别提架构了。因此,一年后,我决定再跳回小公司,把技术好好学学。

    因此,这次我是领完年终奖,春节后就提出辞职,并在一家小公司工作,当时月薪只有8000元,少了2000。主要是看中了那里的项目。我到这里不到3个月,写了2万行代码,而且深受老板认可,直接把我的薪水调到12000,并且升职为项目经理,带7个人,我再一次兴奋了,后来,我又学会了带项目、见客户、学会了如何与高层领导接触,学会了酒桌文化、学会了如何带下属、学会了更深层的技术。在得到了老板认可后,年底,老板又给我加3000,给了我一个5W的大红包。

    如今,我已经升职为公司的首席架构师,代技术总监职,由于我们老板就是出资人,所以,他更多地是参与运营。我还需要很长的时间磨合,但我还是想有自己的公司,或许有一天,我会自己去创业。

    其实IT行业还是不错的行业,至少有份相对的稳定的薪水,虽然总是加班,而且没有那么多的勾心斗角。
    总结一下我认为做好一名it工程师最重要的:

    1.一颗善良的心,一颗忠诚的心,学会关心同事,关心领导,关心下属,关心家人。
    2.扎实的技术基本功,一专多通。在你所在行业,必须精通业内技术,了解行业形势以及行业动向。
    3.灵活的头脑,会与领导相处,会与同事相处,会与家人相处。
    4.学会受委屈,学会挨骂。
    5.做事情有大局观。
    6.要能吃苦!一本本书要读的下去!
  2. A
    四年工作的总结

    楼主说明了成功离不开运气加努力。 楼主为IT人民带来了正能量!加油。 

深入学习C语言知识点checklist——测试你掌握C的程度

  1. Q
    字符串  
    学习时间:1.5W(“W”周,下同)
    知识点checklist
    strlen()函数的返回值是什么类型的?
    字符串strlen()的值,是否和他占据的内存空间相同?
    你是否知道strcpy函数存在的潜在风险?如何避免?
    如果一个字符串没有字符串结束符,而调用str开头的库函数,会发生什么?
    Strcpy(),strcat(),strcmp(),strncpy(),strncat(),strncmp()内部到底是如何运行的?这些函数到底对源字符串和目标字符串做了些什么?你是否观察过它们运行时两个字符串内存的变化?
    上面这些函数使用时,各有哪些需要注意的地方?
    你会几种字符串查找操作?
    c语言中有字符串这个数据类型吗?
    对字符串进行操作的时候,是否为字符串结尾符预留存储位置?不然的话容易造成非常访问内存。

    数组
    学习时间:2W
    知识点checklist
    你肯定知道,定义“int a[10];”,a[10]这个元素是无效的。
    你知道几种数组初始化的方法?
    数组和指针有千丝万缕的联系而又不同,你是否对他们在不同情况下的使用进行过详细的总结?
    “int calendar[10][20];”,这是一个什么样的数组?它拥有10数组类型的元素,还是20个?
    “int a[10];”,数组名a在本质上是一个什么?你是否打印过a的值?
    你知道几种获取数组某元素的方法?
    指针和数组相同吗?什么时候相同?什么时候不同?
    用指针和下标访问数组元素,那种方式更快?

    结构体
    学习时间:1W
    知识点checklist
    你知道什么是位域结构体吗?如何定义它?如何使用它?
    你知道字节对齐对结构体占用内存空间大小的影响吗?如何计算结构体占用内存的大小?


    学习时间:1W
    知识点checklist
    你知道宏的本质是什么吗?函数?语句?类型定义?或者其他?
    你知道语言设计者为什么设计宏吗?这些原因目前是否仍然成立?
    你会设计带有参数的宏吗?
    你知道使用宏的参数的的时候的注意事项吗?
    你会设计带有可变参数的宏吗?
    你知道使用宏有什么劣势吗?
    你有没有更好的替代方案?


    枚举
    学习时间:0.5W
    知识点checklist
    是否可以指定枚举中各项的值?
    如果不指定值,枚举的第一个值是多少?
    枚举的值是否可以是负数?
    定义枚举的时候,你是否专门定义了枚举的最小值和最大值?


    Switch
    学习时间:0.5W
    知识点checklist
    switch(c)中的c的数据类型有哪些?
    你是否在所有的switch中都加了default语句?
    是否在所有的case中都加了break语句(一般情况的做法)?如果你不加break,将会发生什么?


    Static
    学习时间:1W
    知识点checklist
    static的三个主要作用是什么?
    static的修饰的局部变量是保存在什么地方的?全局变量哪?
    static修饰的全局变量和函数,在其他的文件中是否可以访问?如何访问?
    你知道static是c语言中实现封装和隐藏的利器吗?你是否经常使用?
    定义在不同源文件中的static全局变量,编译器是否允许他们的变量名称相同?他们在内存中的地址是否相同?函数那?


    const
    学习时间:1W
    知识点checklist
    你是否经常使用const来表明不能够被更改的变量?
    你是否经常使用const常量来代替宏?
    下面四种情况,你知道是各表示什么意思吗?
    int  i_value= 10; 
    const  int* pvalue = &i_value
    int  const *pvalue = &i_valueint*  const  pvalue= &i_value
    const  int* const  pvalue = &i_value
    你知道const常量如何初始化吗?


    Sizeof
    学习时间:1W
    知识点checklist
    对于字符数组,strlen和sizeof的值是否相同?
    Sizeof本质上是函数还是宏?
    Sizeof的返回值是什么类型?



    指针
    学习时间:3W
    知识点checklist
    “int *p;”&p,p,*p他们的值分别表示什么含义?
    你定义的指针初始化了没?
    你理解指针的指针的概念吗?你会使用吗?
    “int *pi_value; pi_value = 0x100000;” pi_value + 1的值是是多少?
    你会定义函数指针吗?
    你会使用函数指针调用函数吗?
    关于指针和数组,请参见知识点数组。


    动态分配内存
    学习时间:1W
    知识点checklist
    动态分配的内存是保存在什么地方的?
    什么情况下使用动态分配内存?
    动态申请内存一定要释放,否则会内存泄露。你是否使用过内存检测工具?


    函数
    学习时间:1W
    知识点checklist
    如何查看函数在内存中的地址?
    如何给一个函数指针赋值?
    你是否会定义可变入参函数
    你是否可以区分函数的形参与实参?
    如何定义函数名,以准确的表达函数的用途?
    你是否使用const来修饰函数入参和返回值,以表的特定的含义?
    递归如何使用?

    变量
    学习时间:1W
    知识点checklist
    全局变量,局部变量,常量分别保存在内存中的什么地方?
    不同类型的变量,你是否知道其作用域?
    全局变量和局部变量是否可以重名?你是否在这样做?
    局部变量在函数退出后是否有效,为什么?
    全局变量为什么不允许定义在头文件中?有何危害?

    链接(linux)
    学习时间:1W
    知识点checklist
    链接位于编译过程的那个阶段?
    动态链接库和静态链接库使用时有何区别?
    如何对动态链接库进行动态加载(不用重启程序而加载链接库)?
    动态链接有何优点?
    动态链接库中是否定义了非static的全局变量?你是否知道这是一个非常危险的动作?
    动态库中的全局变量(非static)和函数(非static)是否可以和上层全局变量和函数重名?重名后会发生什么事情?


    运行时的数据结构(linux)
    学习时间:1W
    知识点checklist
    你知道什么是段的概念吗?
    可执行程序可以分为几个段?每个段保存的是什么内容?
    如何查看可执行程序各个段的大小?
    当函数被调用时发生了什么?
    你有没有试过程序的栈空间最大有多大?程序超过此大小会发生什么?
    你使用的系统的栈是向下生长的,还是向上生长的?

    Include
    学习时间:0.5W
    知识点checklist
    1、如何避免对同一头文件的多次include?


    声明
    学习时间:1W
    知识点checklist
    什么是声明,什么是定义?
    你是否会运用c语言声明的优先级规则?


    关于复杂度:
    软件的首要技术使命是管理复杂度。
    优秀程序员的一个特质是将复杂的事情简单化,而非将简单的问题复杂化。所以,他们一般会选择简单的解决方案。
    极尽机巧,复杂的解决方案,除了将新手搞得晕头转向之外,别无他用。
    阅读优秀程序员的代码,是一种享受,你很少遇到思维的阻力,你可以尽情的享受简单之美。
    所以,对难以理解的语言特性,要慎用、少用,最好不用,而以简单的解决方案替代之。但是,在做这些之前,你必须对这些知识点理解深刻。

    如果你发现有什么错误,请和我联系。
    如果这些知识点你90%以上都不知道,或者理解不深刻——我希望你可以加入DS计划,共同学习。
    如果这些知识点你90%以上都知道,并且理解深刻——我希望你也可以加入DS计划,成为知识点专家,对新手进行指导。
    如果你知道的比上面列出的还要多,或者还有你认为非常重要的,建议你也分享出来,对上面列举的内容进行优化。

    原文地址:
    DS计划加入方式:
    1、 方式1 :加入 QQ 群: 93684322 。
    2、 方式2 :加入 CSDN 群组:   

    一位网友的建议

    对《C方向项目详细计划》的一点建议 
    作者:陈新 
    原文: http://hi.csdn.net/space-1568678-do-thread-id-990.html 
    首先自己介绍一下,我已经工作多年,目前半管理半开发,主要使用PHP和C语言,对于C语言有过一定研究,有一些经验。 
    我很少上CSDN,虽然已经注册了很长时间,今天心血来潮进来看看,就发现了常高伟的的文章《深入学习C语言知识点checklist——测试你掌握C的程度》,仔细看了一遍,觉得还不错,这年头还执着于技术细节的人很少了,可见作者还是下了不少功夫的。 
    接着就看到了“读S计划”,觉得有点意思,看完之后就有了写这个建议的冲动,希望对大家有所帮助。 

    关于c语言知识点本身,还是挺全面的,如果一个人大部分问题都能详细解答,说明这个人对C语言的了解还是很不错的。 
    不过我还是有几点建议: 
    1、知识点组织得不是很好,显得有些凌乱,有些相关知识点被分割到了多个地方,有些不够全面,从学习的角度来将,不是非常好。 
    例如开始就从字符串操作讲起,我觉得不是很好。原因是字符串操作只是库函数,对于c语言的字符串,我们开始只要知道是0结束就够了,函数后面在慢慢学习。了解字符串函数最好的办法,就是自己实现这些函数,然后跟源代码进行比较,找出差距。 
    例如宏和Include,不应该分开,而应该作为预处理统一学习。预处理主要包括宏替换、文件包含和条件编译三部分,另外的一些慢慢再了解就可以了。 
    此外,我觉得应该把static、const这些限定词和变量结合在一起学习,顺便把其它限定词auto、extern、register、 volatile、restrict、inline等整合在一起,从变量的类型(存储格式)、生命周期、作用域、可视性、存储分配等各种角度出发进行说明。 
    2、有些提问不是很恰当。 
    例如sizeof本质上是函数还是宏?因为sizeof既不是函数,也不是宏,这么提问容易让人产生误解。要想弄明白sizeof具体是什么,至少要明白编译的整个过程,弄明白编译时和运行时的概念。 
    例如数组提到的定义int a[10]; a[10] 这个元素是无效的。这种说法并不完全正确,a[10]并非无效,如果真弄明白了具体含义,完全是可以这么使用的(当然一般不推荐)。 
    3、学习时间的安排 
    像Switch、枚举之类的,如果有人讲解,一天就足够了。而数组应该和指针放在一起,由于指针是c语言的难点之一,恐怕3周的时间都不一定足够。 
    4、应该把c语言的学习当作当作一个系统,分成多个阶段。 
    个人觉得分为三个阶段比较合适: 
    第一阶段是c语言本身,主要是类型、操作符、表达式、语法结构、函数、指针、数组、结构等,想完全弄清楚这些其实很不容易。入门可以参照谭浩强的那本教科书,不过这本书只适合了解一下,不深入,而且里面有些地方和例子都不是很好。还是推荐K&R的《The C Programming Language》,最好是英文原版的。这阶段可以同时学习《数据结构》,尝试实现一些链表、树的操作。 
    第二阶段是结合着实际情况,加深对函数以及相关知识的认识,试着编写一些小软件,实现一些小功能。可以和《APUE》一起学习,里面讲到的例子都可以自己写一下。 
    第三阶段是深入学习编译原理、操作系统等知识,了解代码是如何从文本文件一步一步变成可执行文件的,知道栈、堆分别是什么,清楚程序的存储空间布局,库函数和系统调用的区别等。这阶段可以在某个方面深入下去,编写一个比较大的软件,例如一个简单的网络程序、数据库系统或者编译器等。 
    因此知识点中的链接、运行时的数据结构、结构体中的内存对齐等和其它知识点放在一起并不是很好,毕竟大部分其它大部分题目都是c语言本身的知识,而这些知识点不少都是要看具体实现的,甚至有些并没有标准答案。 

    另外,还有一些题外话: 
    1、现在已经比较少使用c语言开发软件了,c语言对开发者的要求比较高,c语言不是一天两天就能掌握的,因此首先要弄清楚自己是否真的对技术感兴趣,对技术有种刨根问底的冲动,而且愿意为此花功夫。如果仅仅是想搞搞应用,要快速实现某个功能,而不追求效率,不在乎具体实现方式,最好还是去学习更高级的语言。 
    2、 c和c++不是一个语言,所谓c++是c语言的超集也是不正确的,如果当初c++的名称是d语言之类的,可能就不会有这么多麻烦了。最主要两者的指导思想是不一样的,c语言默认其使用者什么都懂,所以将一切的控制都交给开发者自己去完成,语言本身不作太多限制,给开发者最大的自由度。这么做的好处和坏处都是非常明显的,没有谁比谁好的问题,只有是否适用的问题。 
    3、语言本身只是一个工具,将我们了解的计算机知识发挥、展示出来的工具,但基础知识远远比语言本身更重要。如果认为学好了一门语言,就是所谓的高手了,那是不切合实际的。当然语言本身也需要我们花费很大精力,毕竟掌握好一个工具,更能让我们的工作事半功倍。
  2. A
    我都部会啊。

跪求大牛传授linux内核学习方法和路线

  1. Q
    本人学习linux内核一个周了,但是内核中的东西实在是看不太懂,而且不知道那些部分是必须要看的,现在在看linux内核的启动过程。比较困难,请高人指点。
  2. A
    以下是我给你的建议,一定要给分啊。

    1. 了解操作系统基本概念。如果不会,可以学习《操作系统:设计与实现》Andrew S.Tanenbaum 写的那本。以MINIX为例子讲解操作系统的概念。非常推荐。
    2. 有了操作系统的基本概念以后,可以了解Linux的机制了。推荐《Linux内核设计与实现》Robert Love 写的。这本书从概念上讲解了Linux有什么,他们是怎么运行的。这本书要反复认真看透。
    3. 有了Linux内核的了解,还需要具体研究Linux内核源码。最经典的就是《深入理解Linux内核》Daniel P. Bovet 写的。学习这本书的时候,要对着内核代码看着学。这本书学起来相当费力了,那么多多代码要研究。不过这本书如果学明白了,恭喜你,Linux内核你已经很熟悉了。
    4. 如果要开发设备驱动,可以学习《linux设备驱动程序》O'Reilly出版社的。这本作为驱动的入门是很好的资料。另外还有一本《精通Linux 驱动程序开发》也是不错的教材,可以参考着看。学习驱动,免不了要学习一些硬件的协议和资料,研究哪个就找到相应的硬件文档,把硬件的工作原理搞明白。这些就不细说了。
    5. 网络部分,学些Linux网络部分就学习《深入理解LINUX网络技术内幕》。这本书把Linux的网络部分讲的非常清晰透彻。但是通常不做这方面的工作研究,也不用研究这么深,毕竟现在国内相关职位较少。
    6. 现在Linux相关的工作,多集中在一些嵌入式开发领域,arm,mips等,要学习以下这些体系架构的的资料,了解CPU的设计和工作方式。ARM就看对应的芯片手册,讲的很细致。MIPS就看 《see mips run》,有一二两版,两版内容有些差异,推荐都看。
    7. 补充一点经验。不要认为Linux很庞大,很复杂,就觉的很难学。任何东西认真学下来都是能学会的,看你都恒心和毅力了。另外,不要走弯路,不要看市面上讲什么Linux0.11的那些书,直接学你要学的东西。就像学C语言看什么谭浩强一样,弯路走了,力气没少花,还严重影响学习效果。

    你问的内核,多给你说几句应用编程,有时候经常会需要的:
    1. 学习Linux应用编程,建议看《unix环境高级编程》,把里面的例子都做一遍,会对整个Linux编程有系统都认识。
    2. 针对Linux,有本 《Linux系统编程》,学完上一本,这本很快看一遍就懂了。主要是针对Linux具体懂一些内容,讲的挺全了,很实用。
    3. Linux网络编程,系统的学习一下《unix网络编程.卷1,套接字联网api》,基本上网络应用相关的程序就都没问题了。

    这些内容,你分几年时间,分步计划学习,就会成为Linux高手了。


常用C++网址

  1. Q
    孙鑫vc视频教程 
    http://www.codeguru.cn/VC%26MFC/sunxinvc 
    C函数实例参考手册 
    http://www.codeguru.cn/CPP/CExample/ 
    C\C++实例参考手册 
    http://www.codeguru.cn/CPP/cppExample/ 
    Win32Api实例参考手册 
    http://www.codeguru.cn/VC%26MFC/Win32ApiExample/ 
    MFC实例参考手册 
    http://www.codeguru.cn/VC&MFC/MFCExample/ 
    HTML实例参考手册 
    http://www.codeguru.cn/HTML/HtmlExample 
    Transact-SQL实例参考手册 
    http://www.codeguru.cn/Script/TransactSQLExample 
    ASP对象实例参考手册 
    http://www.codeguru.cn/Script/ASPObjectExample 
    Windows脚本实例参考手册 
    http://www.codeguru.cn/Script/WinScriptExample 
    十部算法经典著作 合集 
    http://www.codeguru.cn/cpp/10book 
    二级试题全集 
    http://www.codeguru.cn/cpp/2JiCShiTiJi 
    高质量C++/C编程指南 
    http://www.codeguru.cn/cpp/AdvanceC++-CProgramGuide 
    应用C++技术构建优质软件 
    http://www.codeguru.cn/cpp/AppliedCpp 
    ASCII码表 
    http://www.codeguru.cn/cpp/ASCII 
    C\C++语言程序百例 
    http://www.codeguru.cn/cpp/C&&C++YuanYanChenXuBaili 
    C++编码规范与指导 
    http://www.codeguru.cn/cpp/C++CodingGuide 
    C++PrimerPlus4th 
    http://www.codeguru.cn/cpp/C++PrimerPlus4th 
    C++语言程序设计课件(作者:郑莉) 
    http://www.codeguru.cn/cpp/C++ProgramingZhengLi 
    C++语言程序设计 
    http://www.codeguru.cn/cpp/C++YuYanChengXuSheJi 
    C语言函数示例集 
    http://www.codeguru.cn/cpp/CFunctionExamples 
    C高级编程技术 
    http://www.codeguru.cn/cpp/CGaoJiBianCheng 
    C语言技术文章 
    http://www.codeguru.cn/cpp/CLanguageArticle 
    C++疑难解答 
    http://www.codeguru.cn/cpp/CppAQ 
    C++实践之路 
    http://www.codeguru.cn/cpp/CppInAction 
    C++应用程序例解 
    http://www.codeguru.cn/cpp/CppProgramLiJie 
    C++参考 
    http://www.codeguru.cn/cpp/cppreference 
    CPrimerPlus5thEdition习题答案 
    http://www.codeguru.cn/cpp/CPrimerPlus5thEditionAnswer 
    C语言编程宝典之一 
    http://www.codeguru.cn/cpp/Cprogramdict 
    C语言参考手册 
    http://www.codeguru.cn/cpp/Creference 
    C语言学习和精华文摘 
    http://www.codeguru.cn/cpp/CStudyAndArticle 
    数据访问模式 
    http://www.codeguru.cn/cpp/DataAccessPatterns 
    数据结构与算法综合资料库 
    http://www.codeguru.cn/cpp/DataStructsLibrary 
    数据结构-严蔚敏 
    http://www.codeguru.cn/cpp/DataStructYanWeiMin 
    Effective C++ 
    http://www.codeguru.cn/cpp/EffectiveCpp 
    GenericProgramming 
    http://www.codeguru.cn/cpp/GenericProgramming 
    设计模式迷你手册 
    http://www.codeguru.cn/cpp/MiniDesignPattern 
    经典排序算法 
    http://www.codeguru.cn/cpp/SortingAlgorithms 
    谭浩强C语言 
    http://www.codeguru.cn/cpp/TanHaoQiangC 
    TheC++ProgrammingLanguage3rdEd 
    http://www.codeguru.cn/cpp/TheC++ProgrammingLanguage3rdEd 
    TheCprogrammingLanguage 
    http://www.codeguru.cn/cpp/TheCprogrammingLanguage 
    TurboC2.0集成开发环境的使用 
    http://www.codeguru.cn/cpp/TurboC2ShiYong 
    用VC开发ACTIVEX 
    http://www.codeguru.cn/VC&MFC/ActiveXProgramingWithVC 
    用DirctX9进行高级3D游戏程序设计 
    http://www.codeguru.cn/VC&MFC/Advanced3DGameProgrammingwithDirectX9 
    APracticalGuideUsingVisual C++andATL 
    http://www.codeguru.cn/VC&MFC/APracticalGuideUsingVisualCandATL 
    21天学会VC数据库编程 
    http://www.codeguru.cn/VC&MFC/DatabaseProgrammingWithVisualC6In21Days 
    STL轻松入门 
    http://www.codeguru.cn/VC&MFC/EasySTL 
    InsideAtl 
    http://www.codeguru.cn/VC&MFC/InsideAtl 
    COM+组件服务技术内幕 
    http://www.codeguru.cn/VC&MFC/InsideCOM+ 
    MFC参考手册 
    http://www.codeguru.cn/VC&MFC/MFCReference 
    Windows网络编程技术 
    http://www.codeguru.cn/VC&MFC/NetworkProgramingForMicrosoftWindows 
    OGRE手册 
    http://www.codeguru.cn/VC&MFC/OGREManual 
    OpenGL基础图形编程 
    http://www.codeguru.cn/VC&MFC/OpenGLJiChuTuXingBianCheng 
    MFC程序设计 
    http://www.codeguru.cn/VC&MFC/progmfc2 
    VC技术内幕 
    http://www.codeguru.cn/VC&MFC/ProgramingVC 
    Windows核心编程 
    http://www.codeguru.cn/VC&MFC/ProgrammingApplicationsforMicrosoftWindows 
    21天学会ActiveX编程 
    http://www.codeguru.cn/VC&MFC/TeachYourselfActivexIn21Days 
    游戏编程大师技巧(第二版) 
    http://www.codeguru.cn/VC&MFC/TricksofWinGameProgrammingGurus2ed 
    VC编程经验总结 
    http://www.codeguru.cn/VC&MFC/VCBianChengJianYanZongJie 
    VC编程资料 
    http://www.codeguru.cn/VC&MFC/VCBianChengZiliao 
    VC常见问题集(中文) 
    http://www.codeguru.cn/VC&MFC/VCFaqsCN 
    VC高级编程 
    http://www.codeguru.cn/VC&MFC/VCGaoJiBianCheng 
    vchome图形图像编程技术篇 
    http://www.codeguru.cn/VC&MFC/vchomeGraph 
    VC知识库 
    http://www.codeguru.cn/VC&MFC/vckbase 
    VC语言参考手册 
    http://www.codeguru.cn/VC&MFC/VCLANG 
    vc++ 编程指南 
    http://www.codeguru.cn/VC&MFC/VCProgramGuide 
    Windows程序设计 
    http://www.codeguru.cn/VC&MFC/WindowsProgramming 
    Winsock程序员疑难解答 
    http://www.codeguru.cn/VC&MFC/WinsockProgrammerFAQ 
    Microsoft编程精粹 
    http://www.codeguru.cn/VC&MFC/WritingCleanCode 
    http://bbs.topsage.com/index_121.html 
    钱能 c++程序设计教程 第二版 高清PDF版 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166018 
    Essential C++ 中文版+英文版 侯捷译 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=167578 
    编程点金之Visual C++(电子教程) iso 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181036 
    C++程序调试实用手册 PDF版下载 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181037 
    C++面向对象多线程编程 PDF版下载 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181038 
    C++高级编程参考手册 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=145562 
    C++ Primer 第三版 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=145858 
    C++ Primer 第四版 中文版高清晰 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=177763 
    高质量C++编程指南 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=177759 
    C++ 编程思想 第1卷 标准C++导引 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=177774 
    C++ 编程思想 第2卷 实用编程技术 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=177770 
    More Effective C++ 简体中文版 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146871 
    C++ Templates 中文版+英文版 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=176004 
    C++ Coding Standards[Addison Wesley] 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175999 
    Absolute C++ 全彩页代码剖析 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175578 
    Accelerated C++ - Practical Programming by Example 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=177489 
    Inside the C++ Object Model 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175359 
    More Exceptional C++ [Addison Wesley] 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175358 
    Exceptional C++ [Addison Wesley] 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175357 
    Sams出版 C++ Unleashed 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163617 
    C++ GUI Programming with QT4 
    http://bbs.topsage.com/dispbbs.asp?boardID=119&ID=146734 
    Visual C++ 6傻瓜书 快速参考 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173217 
    Visual C++ 6.0 编程实例与技巧(PDF中文版) 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173210 
    Visual C++ 21天自学教程 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173174 
    跟我学Visual C++ 6 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174442 
    Visual C++ 6 数据库编程 21天自学教程 CHM 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173173 
    The C++ Programming Language 第三版 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175018 
    深度探索C++对象模型 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=176965 
    Special Edition Using Visual C++ 6 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173171 
    Professional MFC with VC 6 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166005 
    Practical C++ Programming 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173744 
    Cross-Platform Development in C++ 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174168 
    Iterative UML Development Using VC++ 6 
    http://bbs.topsage.com/dispbbs.asp?boardID=124&ID=174831 
    Ace Programmer's Guide 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174449 
    Visual C++高级界面特效制作百例 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=168630 
    精通GDI+编程 清华大学出版 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=170571 
    孙鑫C++视频教程 rmvb格式 全20CD完整版 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=156290 
    C++视频教程 边用边学Visual C++ 6 (ASF格式) 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=177500 
    中山大学蔡培兴 C++语言视频教程 全51讲 精品推荐 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158073 
    C++程序设计视频教程 东南大学何洁月主讲 全80讲(上) 48讲 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181543 
    C++程序设计视频教程 东南大学何洁月主讲 全80讲(下) 32讲 
    http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181546 
    《VC知识库5周年精华珍藏版》 
    http://www.ibeifeng.com/read.php?tid=592&u=14387 
    C语言经典算法100例(强烈推荐) 
    http://www.ibeifeng.com/read.php?tid=1334&u=14387 
    《C++程序调试实用手册》(DeBUGGING C++) 
    http://www.ibeifeng.com/read.php?tid=587&u=14387 
    【0614】【孙鑫老师】【VC++深入详解视频及电子书】【flash版】【全20集】【大小:共786MB】 
    http://www.ibeifeng.com/read.php?tid=2522&u=14387 
    《Visual C++灵感编程教学光盘》 
    http://www.ibeifeng.com/read.php?tid=588&u=14387 
    《Visual C+++SQL Server数据库开发与实例》 
    【中文】【CSDN-算法精华(收集)】【(CHM)(394.7KB)】 
    http://www.ibeifeng.com/read.php?tid=2424&u=14387 
    算法ebook(10部算法经典著作的合集) 
    http://www.ibeifeng.com/read.php?tid=339&u=14387 
    《C++程序调试实用手册》(DeBUGGING C++) 
    http://www.ibeifeng.com/read.php?tid=1127&u=14387 
    《边用边学C语言视频教程》完全按照高等教育自学考试C语言教材授课 
    http://www.ibeifeng.com/read.php?tid=586&u=14387 
    《C语言速成3.0视频教程》V3.0[ISO] 
    http://www.ibeifeng.com/read.php?tid=590&u=14387 
    《VC++深入详解》视频教学DVD光盘 
    http://www.ibeifeng.com/read.php?tid=1119&u=14387 
    【0610】【数据结构-清华严蔚敏老师】【C语言版视频教程】【 全52讲 完整版】 
    http://www.ibeifeng.com/read.php?tid=630&u=14387 
    【0611】【青岛软件实训】【C++培训资料】【全】【F】 
    http://www.ibeifeng.com/read.php?tid=2248&u=14387 
    【0620】【清华大学】【面向对象程序设计C++】【王萍】【F】 
    http://www.ibeifeng.com/read.php?tid=2963&u=14387 
    【0610】【xx机构】【c语言速成】【全】 
    http://www.ibeifeng.com/read.php?tid=223&u=14387 
    【0610】【MSDN】【 李建忠C++视频】【全】 
    http://www.ibeifeng.com/read.php?tid=733&u=14387 
  2. A
    谢谢分享

大三学生的困惑,请各位大大指点!

  1. Q
      大家好,本人现在大三,专业是计算机科学与技术,我这个学校开设的这个专业一直有点偏向应用程序设计,但是我本人是比较喜欢底层和原理性的东西,大一和大二上基本上没什么目标,跟着学校学,教什么学什么,但是学校进度太慢,感觉自己懂得太少了,大二下才开始恶补狠学,花了一年的时间学习了很多东西首先是了解了Linux,学习的是《鸟哥的私房菜基础篇》,服务器架设篇我也基本上快速看了遍,在学校机房也基本上把能搭建的服务器都搭建过了,但是那不是我最想学习的底层方向,所以没有去熟练掌握,然后学习了《Linux程序设计》,《Unix环境高级编译》,《Unix网络编程》2卷,Richard Stevens大师的著作不是那么好消化,看完了之后我也经常反复翻阅来巩固基础,我想在学习了汇编语言和加深了C语言基础之后开始阅读内核,虽然这一路上我感觉懂了很多东西,但是我就觉得一直都是看书,完全不知道到底自己真正动手起来的编程能力怎么样,在学校里我也在做LAMP项目,最近课程设计跟外面企业的老师在做数据库开发的项目,这么一来JAVA,PHP,JSP还有Oracle数据库我至少知道了怎么去动手实践和设计,流程是什么样的,但是我一直不知道我一直想走的底层方向应该怎么去锻炼自己的能力,光看书仅仅只是明白原理,我也知道底层方面的东西不像是应用软件,不是那么容易可以写出来个什么东西,所以我很困惑,到底要怎么加强这方面的编程能力和实践动手能力,还请各位大大指点迷津,感激不尽!
  2. A
    找好自己的方向,参考一下这里http://coolshell.cn/articles/4990.html
    1. 了解操作系统基本概念。如果不会,可以学习《操作系统:设计与实现》Andrew S.Tanenbaum 写的那本。以MINIX为例子讲解操作系统的概念。非常推荐。
    2. 有了操作系统的基本概念以后,可以了解Linux的机制了。推荐《Linux内核设计与实现》Robert Love 写的。这本书从概念上讲解了Linux有什么,他们是怎么运行的。这本书要反复认真看透。
    3. 有了Linux内核的了解,还需要具体研究Linux内核源码。最经典的就是《深入理解Linux内核》Daniel P. Bovet 写的。学习这本书的时候,要对着内核代码看着学。这本书学起来相当费力了,那么多多代码要研究。不过这本书如果学明白了,恭喜你,Linux内核你已经很熟悉了。
    4. 如果要开发设备驱动,可以学习《linux设备驱动程序》O'Reilly出版社的。这本作为驱动的入门是很好的资料。另外还有一本《精通Linux 驱动程序开发》也是不错的教材,可以参考着看。学习驱动,免不了要学习一些硬件的协议和资料,研究哪个就找到相应的硬件文档,把硬件的工作原理搞明白。这些就不细说了。
    5. 网络部分,学些Linux网络部分就学习《深入理解LINUX网络技术内幕》。这本书把Linux的网络部分讲的非常清晰透彻。但是通常不做这方面的工作研究,也不用研究这么深,毕竟现在国内相关职位较少。
    6. 现在Linux相关的工作,多集中在一些嵌入式开发领域,arm,mips等,要学习以下这些体系架构的的资料,了解CPU的设计和工作方式。ARM就看对应的芯片手册,讲的很细致。MIPS就看 《see mips run》,有一二两版,两版内容有些差异,推荐都看。
    7. 补充一点经验。不要认为Linux很庞大,很复杂,就觉的很难学。任何东西认真学下来都是能学会的,看你都恒心和毅力了。另外,不要走弯路,不要看市面上讲什么Linux0.11的那些书,直接学你要学的东西。就像学C语言看什么谭浩强一样,弯路走了,力气没少花,还严重影响学习效果。

    你问的内核,多给你说几句应用编程,有时候经常会需要的:
    1. 学习Linux应用编程,建议看《unix环境高级编程》,把里面的例子都做一遍,会对整个Linux编程有系统都认识。
    2. 针对Linux,有本 《Linux系统编程》,学完上一本,这本很快看一遍就懂了。主要是针对Linux具体懂一些内容,讲的挺全了,很实用。
    3. Linux网络编程,系统的学习一下《unix网络编程.卷1,套接字联网api》,基本上网络应用相关的程序就都没问题了。

如何自学C++,写给初学者

  1. Q

                          如何自学C++,写给初学者


      本人2000年开始学习程序设计,2002年开始学习C++,现在使用C++从事开发靠底层的高性能数值计算应用程序,从vc6到.net03再到vs05,也写了不少行了,虽然大家的开发方向可能与我相距较远,但我还是想把这些年来写代码的心得和如何入门告诉大家,如果您是高手,全当娱乐一笑,如果您还未入门,希望这篇文章能对您有所帮助。 

    我是在信息工程学院读的大学,现在叫北信科大了吧,实际上,想靠学校上课老师教就学会一门语言,是不可能的。总看到有人问学C++要先学C么的问题,个人理解,标准C89和14882C++是比较不同的两种语言,由于C没有泛型库,想写程序,一定要学好数据结构。C++则不然,除了要求掌握红黑树外,其他如链表等数据结构并不需要会实现,取而代之的是要求熟练掌握迭代器的运用。中心意思:如果你确立要学C++,不必先看C。下面还有一些问题,是我经常看到的,在这里回答一下。 

    问:我想学C++,要有计算机基础么? 
    答:基本不需要,如果您很踏实,甚至可以在身边没有电脑的情况下,先用本子练习写小段程序,当您写了一个本子的时候,再去上机编译,事半功倍。 

    问:学习C++,要有英文基础么? 
    答:如果只看书,不需要。如果上机很多,又去看msdn,则需要至少cet4的水平。 

    问:学习C++,要有数学基础么? 
    答:虽然C++本身不需要,但所学的范例较多是数学问题,大概要高中毕业的水平。 

    问:学C++,是自学还是去什么班好? 
    答:无论从哪方面来讲,都是自学好。看书学的话,至少是作者一级的人在教你,然自学即苦闷又吃力,恰逢C++十分庞大,坚持下来者恐怕不多。 

    问:学C++,得多长时间才能学会?所谓学会了又是什么水平? 
    答:至少5年。“纯”的C++语言已十分庞大,再加上环境提供厂商的类库以及各种多如牛毛的小变动,掌握已属不易,所谓5年的学会,应已可编写小规模代码,但若想解决自己使用电脑中实际所碰到的问题(例如:导出媒体播放器播放列表内的媒体文件到指定文件夹),仍然不够。 

    问:怎样自学? 
    答:最开始先集中看一阵,然后写一阵代码以便熟练所学,再看接下来的一部分。如果看不懂,反复研读,如10遍仍不会,跳过看后面的。最好用实体书学习。不要指望在一本书上学会C++。在小有成就后,可放松学习进度,不少思想是要假以时日的。 

    问:学C++,要看哪些书? 
    答:入门书这三本是必须入手并且要一起用的:C++ Primer第三版,潘爱民 张丽 译,中国电力出版社,此书作教材。C++标准程序库,侯捷 孟岩 译,华中科技大学出版社,此书是对C++ Primer的补充,讲解标准库部分。这两本书来说,“C++标准程序库”比较容易看懂,“C++ Primer第三版”则稍难。第三本书:C语言大全 第四版,赫伯特·希尔特 著,王子恢等 译,电子工业出版社,此书提供常用函数,如求平方根的sqrt(),但若用vs05编译环境的话还要看联机手册(它的crt库改写了较多接口)。不作推荐的书:Essential C++,侯捷 译,此书号称“轻薄短小,适合初学者”,但其实进度过快,比较晦涩,初学C++,用此书看不过100页。C++程序设计教程 钱能 主编,此书为国内C++大学教科书权威,但至少从我手中的版本(02年10月版)来看,已与14882标准有较大出入,并且有些吹捧面向对象思想的意味,会给人不好的暗示。C++程序设计语言 特别版,裘宗燕 译,此书不适合初学者,有几年C++经验再来反查此书,或有较大帮助。 

    问:谭浩强的那本“C语言程序设计”我要看么? 
    答:谭浩强的C为国内经典,我看到有不少学生认为自己能写出比书中例子要好的代码,便看不起此书,实在不该。此书指针那部分的讲解堪称酣畅透彻,浅显易懂。又,对编程感到困难重重而失去信心者可看此书。 

    问:学C++也有一段时间了,看到别人聊语言,每每仍听不懂,怎么回事? 
    答:隔行便隔山。人家聊JSP你当然不懂了,这没有什么。人家讲UML、XP你又不懂了,不要紧,一定要明白一个道理,便是:方法是给会者准备的,还不懂win2000框架便要写WinMain(),急功近利,急于求成,迷信速成,都是于己有害的。语言讲究,库讲究,编译器的使用还讲究,哪个看不起都不行。 

    问:我自学了一段时间,卡住了,怎么办? 
    答:不会的,C++是如此庞大,以至于你不会遇到什么东西卡住而绕不开。 

    其实,学习知识,各人有各自的方法,自学一路颇艰险,非大毅力者不能成。最后祝大家工作顺利,生活愉快。
     
  2. A
    楼主 发表于: 2010-02-05 23:59:57

                          如何自学C++,写给初学者


      本人2000年开始学习程序设计,2002年开始学习C++,现在使用C++从事开发靠底层的高性能数值计算应用程序,从vc6到.net03再到vs05,也写了不少行了,虽然大家的开发方向可能与我相距较远,但我还是想把这些年来写代码的心得和如何入门告诉大家,如果您是高手,全当娱乐一笑,如果您还未入门,希望这篇文章能对您有所帮助。 

    我是在信息工程学院读的大学,现在叫北信科大了吧,实际上,想靠学校上课老师教就学会一门语言,是不可能的。总看到有人问学C++要先学C么的问题,个人理解,标准C89和14882C++是比较不同的两种语言,由于C没有泛型库,想写程序,一定要学好数据结构。C++则不然,除了要求掌握红黑树外,其他如链表等数据结构并不需要会实现,取而代之的是要求熟练掌握迭代器的运用。中心意思:如果你确立要学C++,不必先看C。下面还有一些问题,是我经常看到的,在这里回答一下。 

    问:我想学C++,要有计算机基础么? 
    答:基本不需要,如果您很踏实,甚至可以在身边没有电脑的情况下,先用本子练习写小段程序,当您写了一个本子的时候,再去上机编译,事半功倍。 

    问:学习C++,要有英文基础么? 
    答:如果只看书,不需要。如果上机很多,又去看msdn,则需要至少cet4的水平。 

    问:学习C++,要有数学基础么? 
    答:虽然C++本身不需要,但所学的范例较多是数学问题,大概要高中毕业的水平。 

    问:学C++,是自学还是去什么班好? 
    答:无论从哪方面来讲,都是自学好。看书学的话,至少是作者一级的人在教你,然自学即苦闷又吃力,恰逢C++十分庞大,坚持下来者恐怕不多。 

    问:学C++,得多长时间才能学会?所谓学会了又是什么水平? 
    答:至少5年。“纯”的C++语言已十分庞大,再加上环境提供厂商的类库以及各种多如牛毛的小变动,掌握已属不易,所谓5年的学会,应已可编写小规模代码,但若想解决自己使用电脑中实际所碰到的问题(例如:导出媒体播放器播放列表内的媒体文件到指定文件夹),仍然不够。 

    问:怎样自学? 
    答:最开始先集中看一阵,然后写一阵代码以便熟练所学,再看接下来的一部分。如果看不懂,反复研读,如10遍仍不会,跳过看后面的。最好用实体书学习。不要指望在一本书上学会C++。在小有成就后,可放松学习进度,不少思想是要假以时日的。 

    问:学C++,要看哪些书? 
    答:入门书这三本是必须入手并且要一起用的:C++ Primer第三版,潘爱民 张丽 译,中国电力出版社,此书作教材。C++标准程序库,侯捷 孟岩 译,华中科技大学出版社,此书是对C++ Primer的补充,讲解标准库部分。这两本书来说,“C++标准程序库”比较容易看懂,“C++ Primer第三版”则稍难。第三本书:C语言大全 第四版,赫伯特·希尔特 著,王子恢等 译,电子工业出版社,此书提供常用函数,如求平方根的sqrt(),但若用vs05编译环境的话还要看联机手册(它的crt库改写了较多接口)。不作推荐的书:Essential C++,侯捷 译,此书号称“轻薄短小,适合初学者”,但其实进度过快,比较晦涩,初学C++,用此书看不过100页。C++程序设计教程 钱能 主编,此书为国内C++大学教科书权威,但至少从我手中的版本(02年10月版)来看,已与14882标准有较大出入,并且有些吹捧面向对象思想的意味,会给人不好的暗示。C++程序设计语言 特别版,裘宗燕 译,此书不适合初学者,有几年C++经验再来反查此书,或有较大帮助。 

    问:谭浩强的那本“C语言程序设计”我要看么? 
    答:谭浩强的C为国内经典,我看到有不少学生认为自己能写出比书中例子要好的代码,便看不起此书,实在不该。此书指针那部分的讲解堪称酣畅透彻,浅显易懂。又,对编程感到困难重重而失去信心者可看此书。 

    问:学C++也有一段时间了,看到别人聊语言,每每仍听不懂,怎么回事? 
    答:隔行便隔山。人家聊JSP你当然不懂了,这没有什么。人家讲UML、XP你又不懂了,不要紧,一定要明白一个道理,便是:方法是给会者准备的,还不懂win2000框架便要写WinMain(),急功近利,急于求成,迷信速成,都是于己有害的。语言讲究,库讲究,编译器的使用还讲究,哪个看不起都不行。 

    问:我自学了一段时间,卡住了,怎么办? 
    答:不会的,C++是如此庞大,以至于你不会遇到什么东西卡住而绕不开。 

    其实,学习知识,各人有各自的方法,自学一路颇艰险,非大毅力者不能成。最后祝大家工作顺利,生活愉快。
     

【OpenCV】关于一个函数的形参声明 请教!

  1. Q
    小弟刚接触opencv,这应该是一个很小的问题,想请教一下大家


    ————————————————————————————
    放上源程序

    #include "cv.h"
    #include "highgui.h"

    int g_slider_position = 0;
    CvCapture* g_capture =NULL;

    void onTrackbarSlide(int pos)
    {
    cvSetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES,pos);


    }

    int main(int argc, char** argv)
    {
    cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE);
    g_capture = cvCreateFileCapture(argv[1]);
    int frames = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
    if (frames != 0)cvCreateTrackbar("Position", "Example3", &g_slider_position, frames, onTrackbarSlide);


    IplImage* frame;
    while (1)
    {
    frame = cvQueryFrame(g_capture);
    if (!frame)break;
    cvShowImage("Example3", frame);
    char c = cvWaitKey(33);
    if (c == 27)break;
    }
    cvReleaseCapture(&g_capture);
    cvDestroyWindow("Example3");
    }

    ———————————————————————————————————————————————————

    在程序中写了一个子函数(红色字体),书本上说这是一个回调函数?看了一个晚上不是很理解,想请教一下
    再有一个问题就是,下划线的语句中
    有一个子函数调用,但是为什么直接放在了函数的实参声明中的格式不是 onTrackbarSlide()呢?直接onTrackbarSlide就可以了吗?
    opencv是由C写的,小弟C语言学的不是很好,只有一本谭浩强C语言教程,但是翻阅了很久不找不到这样的一种函数声明方法,所以想请教一下各位,谢谢啦
  2. A
    回调函数需要使用函数指针实现
    onTrackbarSlide本身是函数地址,可以用于赋值给函数指针
    有了这个函数地址,就可以在OPENCV内部需要的时候调用该函数了
    1,一般内部需要定义一个函数声明
    typedef void (fnCallback)  onTrackbarSlide(int pos);
    2,再定义一个函数指针
    fnCallback pfnCallback;
    3,在cvCreateTrackbar("Position", "Example3", &g_slider_position, frames, onTrackbarSlide)实现代码中写如下语句
    pfnCallback = onTrackbarSlide;
    4,在需要使用回调函数时
    pfnCallback (pos);

    打完收工!