2013年末、2014年初合辑——关于c语言的进阶学习
太过于慵懒了,一个多月没有来自己的园子播种了。还是给自己找找借口吧,十二月末备战期末考试也是自己没心情码文字的理由吧,一月份理所当然地进入考试周,回家后做了个小手术也是客观上让自己不能静下心来回顾知识点,不能及时开启新篇章的原因吧~~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语言的进阶学习的更多相关文章
- 【OpenCV新手教程之十二】OpenCV边缘检測:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...
- 【OpenCV新手教程之十八】OpenCV仿射变换 & SURF特征点描写叙述合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨) ...
- 【OpenCV新手教程之十七】OpenCV重映射 & SURF特征点检測合辑
本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨) ...
- [OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
http://blog.csdn.net/poem_qianmo/article/details/25560901 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...
- 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
http://blog.csdn.net/poem_qianmo/article/details/26977557 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...
- 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...
- 【Tips】史上最全H1B问题合辑——保持H1B身份终级篇
[Tips]史上最全H1B问题合辑——保持H1B身份终级篇 2015-04-10留学小助手留学小助手 留学小助手 微信号 liuxue_xiaozhushou 功能介绍 提供最真实全面的留学干货,帮您 ...
- SSH三大框架合辑的搭建步骤
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- SharePoint 2013+ Sqlserver 2014 Kerberos 配置传奇, 最终的解决方案 验证。
SharePoint 2013+ Sqlserver 2014 Kerberos 配置传奇. 1,安装数据库,我就不多说安装,客户一定要注意. 我将参照以下实施例和账户. 2,建立DNS,假设没有DN ...
随机推荐
- android 三级菜单 BaseExpandableListAdapter
在网上搜了非常长时间.没有找到合适的Android三级菜单.所以就自己动手写了一个,主要使用了BaseExpandableList来实现,通过三个布局文件来完毕相应的菜单项,详细实现请參照下图. wa ...
- lucene定义自己的分词器将其分成单个字符
问题描写叙述:将一句话拆分成单个字符.而且去掉空格. package com.mylucene; import java.io.IOException; import java.io.Reader; ...
- HDoj-1228-A + B
A + B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- xcode UIImageView创建、图片加载、 音频文件播放、 延迟调用
代码创建 /** 创建UIImageView */ UIImageView * imageView=[[UIImageView alloc]init]; /** 设置尺寸位置 */ imageView ...
- nodejs在服务器上运行
nodejs运行之后,关掉链接,网站运行就会断开,需要安装forever,后台执行. 安装方法如下(在windows和Linux下都能运行)://forever的安装: npm install fo ...
- SQL Server2008不允许修改表结构解决办法
1.修改表结构遇到 2.点击取消 3.打开[工具]—[选项] 4.找到[Desiginers]标签,在右边找到“阻止保存要求重现创建表的更改”,取消勾选.
- Oracle集合操作函数:union、intersect、minus
[转]Oracle集合操作函数:union.intersect.minus 集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINU ...
- IE8,9下的ajax缓存问题
最近在做一个网站的登录注册框,前端使用了jquery.由于sign和login不是在单独的页面上,而是以一个弹出框出现.所以决定使用ajax来实现注册和登录功能.本以为可以一帆风顺,结果在测试的时候发 ...
- hadoop搭建杂记:Linux下ssh免密码登陆
关于ssh免密码登陆的问题 关于ssh免密码登陆的问题 linux下可以用ssh-keygen来生成公钥/私钥对 ①生成id_rsa和id_rsa.pub公钥/私钥对,自动在~/.ssh下生成文件(亦 ...
- IISExpress实现外部访问
首先修改IISExpress配置文件 \IISExpress\config\applicationhost.config 在website中添加一个binding <binding protoc ...