C语言学习总结

        最近公司指派任务,为平台3.0下一阶段研发工作对PG进行研究,其实PG的移植工作一直由算法部在负责,但是PG移植后的任务却是担当这整个平台软件的底层数据存储,事务处理,数据挖掘等方面工作,所以就索性将这一快拿到了平台部来做。因为我所负责的RCP这部分在功能性上基本上也算是告一段落,目前主要就是带带新人,在框架型上进一些指导工作,而学习C语言对我来说有两大好处:1.考试是需要考C和数据结构的;2.学习C语言能够帮助我理解程序在执行过程中的运行情况,能更清楚的了解计算机底层结构。

        在近两周对PG代码的阅读中对C和系统底层都有了更进一步的了解,就进程而言,以前根本不理解,只知道程序运行就需要一个进程,对进程包含那些东西,创建进程需要那些资源,都是毫无概念的,在阅读PG代码的过程中通过网上、书籍的查阅后,对进程有了进一步的了解。

        学习C语言最难的无疑是指针,几乎每一位C语言学习者在处理指针问题上都是伤透脑经的。因为你要真正搞懂C程序,你就必须知道指针所指向的内容是什么?是指向具体数值、是指向内存地址、数组、亦或是函数等等。因为指针是unsafe的,所以在开发的时候脑子里一定要对内存结构有一个清晰的认识,否这就很有可能出现堆栈溢出的错误了。作为总结,那就把学习的经验记下来,以后再次翻阅时也好有一个提示:在阅读指针时首先从未定一标识符开始,遇到扩符变向解析,如此反复,直至定义结束。

        在PG这种多进程程序中,进程间是如何通讯的呢?我们都知道线程通讯可以采用互斥锁来实现,那么进程通讯如何实现呢?在PG中是采用共享内存的方式实现的(还有没有其他的方式我不知道),在主进程中创建内存虚拟文件镜像映射表,各个子进程通过同步信号量来决定是否进入访问共享内存,从而实现进程间通信的。

        C语言中字符串处理对我来说是一个大问题,在高级编程语言(C#、JAVA)中我可以轻松的采用StringBuilder或是String.Format()等方式来实现字符串的拼接,而C中即便是处理这么一个小小的字符串拼接问题都会用到指针,相当头痛。

        唯一值得庆幸的是在经过N多天的努力后,终于将PG跑起来,并且能够DEBUG了。

posted @ 2010-11-04 23:54  SPARON  阅读(421)  评论(2编辑  收藏  举报