C语言基础知识总结(C程序设计语言阅读笔记)
摘要:由于离开IDE以后发现要编程挺不习惯的,所以最近在看C语言,简单整理一些以前没有太注意的细节(可能也是先用C++/JAVA再用C会忽略的地方)。1.C语言中,变量必须先声明后使用,即一个程序块(花括号对)中所有临时变量必须在第一条可执行语句之前全部声明,而不能像C++那样随用随声明;2.C语言中参数传值传递形参,即为参数的拷贝,此与C++/JAVA相同,同时值得注意,ANSI C不支持引用,此与C++/JAVA有区别,那么要对参数进行修改只能使用指针方式(指针传值指针本身仍是形参,要修改指针本身那必须使用双重指针);3.C语言默认类型为int,即参数无类型或函数无返回值类型声明,则认为是i..
阅读全文
计划1.2不使用IDE系统学习C语言
摘要:好吧,首先得承认被Windows+Visual Studio惯坏了,离开IDE写代码困难无比,尤记得当初刚接触编程学JAVA使用UltraEdit进行编程没有电脑也可以写出正确的程序,顿时有了离开IDE学C语言的想法。说来惭愧,我是先学JAVA,然后.NET,后来做图像和模式识别用C++,现在公司规定算法库必须用C,但是后两种语言没有系统学习过,仅能用而已,现在刚好也算是重新打打基础吧。 网上下了The C Programming Language的中文版,希望能够在一个月内过完。此为分支,完成后继续算法。 BSKER 于20...
阅读全文
《算法导论》笔记2——第2章 算法入门
摘要:昨天简单学习了一下makefile和Linux下C语言编程,试了下Anjuta和Eclipse,简单说下Anjuta,建立makefile工程后还是要自己修改makefile的,我在这上面卡了不下一个小时,不过这样也好,一切都可以自己掌控,不至于像以前那么傻瓜化。 进入正题,《算法导论》第2章居然介绍排序算法,估计是想要让大家先对算法有个概念吧,一开始还纠结要不要找其他书补充一下数据结构,后来发现这里所谓排序算法只不过为了讲“增量法”和“分治法”这两种算法设计思想,所以也就释然了。 所谓增量法就是从无到有,保持现有结果正确的情况下不断增加和解决新的问题,从而得到最终的结果。好比是一支军...
阅读全文
《算法导论》笔记1——第1章 算法在计算中的作用
摘要:算法是定义良好的计算过程,通过一系列的计算步骤将输入数据转换为输出结果。首先第一点,算法本身是面向过程的,给定输入得到输出,与对象无关,所以用C语言来学习比较合适。然后,所谓定义良好是指算法必须包括三要素:输入、输出和计算过程。那么有没有不包含三要素的算法呢?首先看有没有没有输入的,产生随机数比较像,调用Rand函数得到一个随机的数字,但是实际上计算机的计算都是确定性的,产生的所谓伪随机数是以当前时间为种子(也可以自行指定)经过一系列计算得到,也就是算法不能做到“无中生有”;再看能不能没有输出,这里需要指出的是所谓输出不应该局限于返回计算结果,而是返回计算结果或者引起系统的某些变化都是输出..
阅读全文
计划1.1从复习算法开始
摘要:国庆回来有些日子,也安装了Eclipse,在安装Java时有些麻烦,11.04中没有Sun的源(是不是被Oracle收购的原因?),折腾了两个晚上,然后发现有open-java,其他一切照网上教程做,用apt-get完成安装即可,不再另起一篇叙述过程。 原本计划自己整理一个算法库出来(其实在公司也有类似的想法和实践),但是发现自己的水平和经验还不够,所以打算暂时搁置,磨刀不误砍柴工,还是先把以前的东西捡起来,打算复习一下算法和数值分析的内容,先把《算法导论》看一遍吧,边看边实现书本中的算法,也算是重新熟悉。当然,光看一本书会比较乏味,CUDA相关的也是照着官方手册来看和学习好了。两本书轮...
阅读全文
C语言实现函数多态
摘要:面向对象编程中比较好的特性就是有继承和函数多态,从而使得对于具有相同父类的子类对象能够调用相同的接口实现对应的功能,举例说明,文本输出类TxtWriter和二进制输出类BinWriter都继承自父类Writer,父类Writer定义了接口Open、Write、Close,两个子类分别实现各自的方法,但是对应的输出格式却分别为文本和二进制,这样其他类使用Writer时会根据实际对象为TxtWriter还是BinWriter而选择对应的方法实现,从而不需要修改大段的代码即可实现输出格式为文本还是二进制。 在实际工程应用中,类似的例子还有很多,比如工程中需要使用不同类型的数据库,如果能够采用上...
阅读全文
计划1:Ubuntu下的CUDA开发以及整理自己的算法库
摘要:折腾了两周多,终于搞定了Win7+Ubuntu双系统,以及Ubuntu下的CUDA开发环境,下面就可以开始学习了。首先关于Ubuntu下的C语言开发需要选择一个集成开发环境(主要是进行关键字、错误提示之类的提高效率),可以采用Eclipse+gcc,当然具体编译过程我想还是熟悉一下make,毕竟Linux是离不开make的,也就是下面这段时间主要先要完成这部分的配置和熟悉。然后则完成CUDA、QT、OpenMP、MPI在Eclipse下的配置,当然QT、OpenMP和MPI是不着急的,暂时还用不到。再从模式识别方面,我希望按照分层模块化的方式整理一套自己的算法库,基本上按照如下的大体框架应用.
阅读全文
OPTIMUS笔记本Ubuntu下CUDA环境配置
摘要:几经折腾,终于搞定了Ubuntu下的CUDA环境,简单叙述过程如下。 首先没有Linux下驱动安装的经验,所以最初安装Nvidia显卡驱动直接变成了升级到11.04版本,然后无法进系统,重新安装,界面方式升级Nvidia显卡驱动,还是提示c错误([drm:intel_dsm_platform_mux_info] *ERROR* MUX INFO call failed,经查可能是双显卡的问题),无语。 每天晚上也就1个多小时,经不起这样不断重新安装系统的折腾,于是决定先搞定系统备份和恢复。受Windows下惯性,首先想到Ghost,然后发现Ghost不支持ext4的分区格式,解决的办法...
阅读全文