摘要: 先看例子:#define A(x) x;x;x;x;x;x;x;x;x;xvoid main(){ int n=1; A(A(printf("%d ",n++)));}打印值:1,2,3,4...100为什么呢?首先要理解,宏的原理。宏是为了简化编程,用来替代一系列预定义指令,是程序中常用的一种方法。那么如何展开?看上面的例子,首先宏中的参数是A(printf("%d ",n++)),所以需要将参数代入,得到10个A(printf("%d ",n++)),发现此时参数依然为宏,需要再展开,得到100个printf("%d & 阅读全文
posted @ 2012-12-24 17:25 da 阅读(221) 评论(0) 推荐(0)
摘要: 为了理解递归,则必须首先理解递归。所谓递归,就是函数调用自身的一种方法。要理解递归,首先要引入栈的概念。栈是一种数据结构。简单的说,栈是存储数据的数据块,允许数据先进先出,类似于枪的弹匣。栈用来存放递归过程中产生的中间数据。如果有判断条件,直到栈中的数据全部出栈递归完成;否则栈的空间会一直增加,递归也会一直进行。为了避免这种现象,有时候我们要的结果是递归完后的结果,我们引入尾递归。所谓的尾递归,是递归的一种特例。是指把把递归的结果当成递归的参数,传给下一个递归。这样一来之前的栈中的参数就没效果了,所以如果编译器对此进行优化的话,按照道理尾递归就永远不可能溢出。下面来看下例子:打印1-1000这 阅读全文
posted @ 2012-12-24 16:20 da 阅读(336) 评论(0) 推荐(0)
摘要: 今天是2012年12月24日,末日之后,圣诞之前,是为重生日。借此机会总结过去的26年。从2006年接触编程到今年已经有6个年头,我也从一个20岁的毛头小伙子长大了。6年里,接触过很多语言,罗列起来也真心不少。c,c#(asp.net),as3.0,js,jsp,asp,php,html,css,asmc++,python.记得当初接触第一次看到老师用c打印出来一个图形界面是何等雀跃。记得毕业设计时候,全组3个人,其实全是我一个人搞定,做了一个asp.net的网站。另外还帮另外一个玩的好的哥们做了一个。那时还颇有成就感。要工作了,碰碰撞撞,一路坎坷终于有机会写代码了。记忆最深的是出国的1年,整 阅读全文
posted @ 2012-12-24 10:44 da 阅读(191) 评论(0) 推荐(0)