太过于慵懒了,一个多月没有来自己的园子播种了。还是给自己找找借口吧,十二月末备战期末考试也是自己没心情码文字的理由吧,一月份理所当然地进入考试周,回家后做了个小手术也是客观上让自己不能静下心来回顾知识点,不能及时开启新篇章的原因吧~~O(∩_∩)O~~

  嘿嘿,我可不是欲扬先抑,下面总结一下近期的学习成果吧。十二月份,主要将《深入理解计算机系统》第三章结束了,再加上自己做了一点小小的实践,渐渐地可以读懂简单的反汇编出来的代码了,利用GDB的反汇编功能调试core dump/segment fault一类的错误的确是有助于自己从根本上了解程序的工作过程。结合书中对原理的阐释,觉得这种边学边用的方法对理解概念掌握方法还是很有帮助的。

  在学习之余,发现自己对于C语言的熟练使用还是有待于提高,所以这段日子自己学习了一下关于c语言进阶的一些知识,并且利用闲暇的时候写写c语言100例上面的小题,俗话说,不积跬步无以至千里,我可不能让自己的知识成为空中楼阁,应该在不断地锻炼中才能让自己更好的成长。结合着对于汇编知识的理解,我发现自己对于c中比较“偏僻”的指针数组,函数指针等概念能够想明白其所以然了,另外,理解static时,能够从存储上将其理解为存储在静态区便很好地了解它的作用域和生命周期了。还有很多以前自己不常用的关键字,以后也要尝试着使用,比如union,以前总是搞不清楚它和struct之间的关系,这回从它的存储上理解起来就很明确了,union的变量实际上是存储在同一个地址上面的,当初定义它主要是为了节省空间,尽可能地实现地址的复用。而struct则是按照顺序存储的,提到这里,为了不误导自己也不误导将来可能读到这篇文章的人,再啰嗦一下struct的存储机制吧,struct中的字节在IA32的系统中是按照一定的规则由编译器补全存储空间的。short的起始地址必须是偶数,float、int的起始地址必须是4的倍数,double的则必须是8的倍数,简言之,起始地址必须是自己的长度的整数倍(单位Byte),做网络通信和对存储要求较严格的时候要引起重视!!!如果不清楚某一数据类型的长度那就百度一下吧,自己动手丰衣足食嘛~

  另附一个小例子方便自己理解union,又可以测出系统是大端/小端:

    int checkSystem( )
    {
          union check
        {
            int i;
            char ch;
          } c;
            c.i = 1;
        return (c.ch ==1);
    }

  若为1则小端,若为0则为大端,关于大小端的阐释在以前的博文中有过探讨(忘了就回去看吧,应该不会忘了~~)。

  接下来,再絮叨一下自己写代码不规范的问题,以后要注意将文件的相关介绍、创作日期、自己的名字写在开始的注释部分,尤其是文件的介绍,否则时间久了自己都会忘记写这个文件的初衷。另外,在函数的前面要注释上它的功能和每个参数的作用(方便自己或别人重复使用),最好添加上在哪里调用了它(尤其是在实验室做项目的时候)。

  今天,我决定跳过《深入理解计算机系统》一书中关于处理器原理和性能优化的章节,直接学习存储器的结构一章,一来是自己对存储器的工作过程有一定的了解,对相关名词也都相对熟悉,就是进一步把知识点学细、学精。相对而言,处理的一些需要记忆的Y86编码就比较生涩,虽然与汇编代码有着很高的相似度,但自己还是读起来有些困难,所以今天开始了我的存储器之旅,对SRAM和DRAM有了进一步的了解,基本理解了主存DRAM的工作模式。对这一部分内容算是简单地开了个头吧~~~

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~感恩生活,继续学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                                                                     Bill 

    

  

2013年末、2014年初合辑——关于c语言的进阶学习的更多相关文章

  1. 【OpenCV新手教程之十二】OpenCV边缘检測:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...

  2. 【OpenCV新手教程之十八】OpenCV仿射变换 & SURF特征点描写叙述合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨)  ...

  3. 【OpenCV新手教程之十七】OpenCV重映射 & SURF特征点检測合辑

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨)  ...

  4. [OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    http://blog.csdn.net/poem_qianmo/article/details/25560901 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...

  5. 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    http://blog.csdn.net/poem_qianmo/article/details/26977557 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...

  6. 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...

  7. 【Tips】史上最全H1B问题合辑——保持H1B身份终级篇

    [Tips]史上最全H1B问题合辑——保持H1B身份终级篇 2015-04-10留学小助手留学小助手 留学小助手 微信号 liuxue_xiaozhushou 功能介绍 提供最真实全面的留学干货,帮您 ...

  8. SSH三大框架合辑的搭建步骤

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  9. SharePoint 2013+ Sqlserver 2014 Kerberos 配置传奇, 最终的解决方案 验证。

    SharePoint 2013+ Sqlserver 2014 Kerberos 配置传奇. 1,安装数据库,我就不多说安装,客户一定要注意. 我将参照以下实施例和账户. 2,建立DNS,假设没有DN ...

随机推荐

  1. SQL数据库插入文本信息

    文本内容

  2. CSS Sprite小图片自动合并工具

    css-sprite是将css样式中零星的小图标,小图片合并成大图显示,这样能减小服务器并发连接数,减小服务器负载和带宽使用,有很高的实用价值.这里介绍一些自动合并图片并生成样式的工具. NodeJS ...

  3. SQL 2008升级SQL 2008 R2完全教程或者10.00.4000升级10.50.1600

    今天将由于需要就将我的SQL 2008升级到SQL 2008 R2. 说到为什么要升级是因为,从另一台机器上备份了一个数据库,到我的机器上还原的时候提示“System.Data.SqlClient.S ...

  4. rownum(转载)

    对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,be ...

  5. 公选网站作业4_2.php

    序:   此实验的功能是只有已经登陆或者已经注册的用户才有发表留言的资格,否则只能够浏览留言. 1.  主要文件: 4_2login.html// 登陆的主页面 4_2login.php  //处理登 ...

  6. eclipse 搭建Robotium环境--apk 环境搭建

    1.配置好android sdk ,java环境 2.重新签名apk文件 在用户目录下,会有一个.android的目录,把re-sign.jar放在该目录下.执行命令 java -jar re-sig ...

  7. oracle 数据库数据迁移解决方案

    大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,接下来把心得与大家分享一下   去年年底做了不少系统的数据迁移,大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁 ...

  8. delete了,析构函数却没有调用

    析构函数在对象的生命结束时,会自动调用,大家所熟知的智能指针就是根据析构函数的这种特性而实现的,包括Qt的内存管理机制,也都是利用了析构函数的这一机制来实现的.c++创始人Bjarne Stroust ...

  9. chrome extensions

        chrome web store   AppsGamesExtensionsThemes   CATEGORIES   All FEATURESClear   Runs Offline By ...

  10. poj 2228 Naptime dp

    这个题目的状态还是比较好想的,dp[i][j]表示已经睡了i个时段,最后睡在j时段的最优值,但是需要处理环的情况,我的做法是算两次,第一次不处理环,第二次强制性要求第一个时段需要睡,然后查看dp[m] ...