01 2012 档案
摘要:之前写红黑树时,因为红黑树有个公有的不存在的叶子NIL,想了好久,怎么来表示这个NIL,如何获得它的地址?不存在?NULL? 纠结过后想到,NIL完全不是一个不存在的叶子,它的地址也没必要是0x00000000这种特殊值,内存的地址不可能重叠(重复),每个变量(没被删除的)都是独一无二的,这样,完全可以随意声明一个NIL,&NIL取其地址,好了,这就是一个特殊的值,表示特殊的NIL。这就足够了。 换个角度想,问题会变的很简单。
阅读全文
摘要:C语言是自由格式语言,在很多情况下,可以自由进行换行。如下: #include <stdio.h> #define NUM(x) \ ( \ x*x \ ) int main ( void ) { char a [ 10 ] = "hello"; int t = NUM(3); printf("%d\n", t); printf ( "%s" "\n", a); return 0 ; }a[10]竟然也可以拆开!当然不能把常量或者标示符拆开。运行结果如下:在宏中使用续行的时候,在续行符之后要直接进行换行
阅读全文
摘要:先看一段代码: #include <stdio.h> int main(void) { char s[10] = "jackpot\n"; printf("%s", s); printf("%.1s\n", "hello,world" + 1); printf("%s\n", (char *)0xffffffff); return 0; }printf中,经常用%s来格式化字符串,那么%s的作用是什么呢?第一个,我们给了s作为参数,即字符串的首地址,结果输出了jackpot第二个,输
阅读全文
摘要:K&R的神书,一直以来只是泛泛的阅读,自以为对C语言掌握了,但是实在是浮于表面,太过浮躁了。春节期间打算重新阅读,完成上面的测试。 自从C语言和UNIX诞生以来,两者就以不同的形式不断影响着人类社会。 一个C语言的发展图大致如下: -----> |BCPL|------->|B|-------->|New B|------->|C| (上图来自Expert C Programming) 最初C语言的发明就是为了避免用汇编语言来写UNIX系统,所以UNIX诞生的时间要早于C。 进入正题,第一个C程序。 #include <stdio.h> int ma
阅读全文
摘要:#include <stdio.h>int main(void){ printf("%.1s\n", "hello,world" + 1); return 0;}
阅读全文

浙公网安备 33010602011771号