08 2011 档案
摘要:最近在复习C语言,感觉自己以前对C的学习和认识简直是shit。今天看到有关结构体中成员存储分配的数据对齐问题,想和大家分享一下,也谈不上心得,就是想总结一下而已。有关数据对齐有两种,一种为自然对齐,一种为强制对齐。1.先看自然对齐,有如下程序: #include <stdio.h> typedef struct { char c1; long l; char c2; double d; }a; typedef struct { char c1; char c2; long l; double d; }b; int main() { printf("%d,%d\n"
阅读全文
摘要:C语言中最棘手问题的当属指针了,不过这也是C的精华所在。指针是一种数据类型,区别在于指针类型的值是一个内存地址。32位机器上,指针变量占用四个字节。往往你觉得你把指针弄的很透彻了,但你还是会做错题目,或许因为粗心,或许自己混淆了,总之指针问题真的很绕。最近笔者在看「程序员求职成功之路」,书中伊始讲的就是C语言指针,看完之后获益匪浅,特在此总结一下。1.先看一道经典的指针题目: #include <stdio.h> int main() { int a[5][10]; printf("%u,%u,%u\n",a,a+1,&a+1); return 0; }
阅读全文
摘要:最近研究网上的各种面经,看到有很多公司的面试题都是关于动态规划的,所以想总结一下自己对于动态规划的理解。我一直非常仰慕那些参加过ACM/ICPC的牛人,他们往往能够很快就能对题目做出分析,并给出应对的算法。笔者曾经做过一些ACM的题目,里面动态规划的题目也不在少数,而且ACM的题目有个特点:很多时候你认为是一道图论题的时候他恰恰是一道要用动态规划来解答的题目,就像东野圭吾的小说「嫌疑犯X的献身」中数学家石神出的数学题一样,表面上是几何问题其实是函数问题。蛋有点扯远了,我只想告诉大家,相比背诵问题的答案,分析问题的方法才是最重要的。在介绍动态规划之前,先看一个大家很熟悉的例子。斐波那契数列的递归
阅读全文
摘要:不久之前看了「编程之美」,里面有在windows下操纵CPU绘制正弦曲线的示例程序。思路很简单,但是需要知道几个windows的API函数。刚开始我想尝试在windows下绘制心形,不过没能做到,原因是CPU曲线是CPU利用率和时间构成的函数的关系,心形是一个封闭图形,不可能是一个函数,所以至少需要两条CPU曲线才能绘制(这需要你的机器为双核或多核或者多个CPU),然而windows的任务管理器,我没能找到将两条CPU曲线绘制在同一图表下的方法,所以没能成功。不过ubuntu下的任务管理器可以,而且还可以设置CPU曲线的颜色。以下是我在ubuntu下任务管理器的截图,我把两条CPU曲线都设置成
阅读全文