
C语言基础
Qdieyou
这个作者很懒,什么都没留下…
展开
-
程序刻隆(源码)附解释
据说以下程序是刻隆程序中最短小精干的,而且它符合C标准(编译时有warning)main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}刻隆:程序运行的结果就是输出程序本身(自己的代码);小解释一下:main(a)中a是一个char类型的指针printf中,参数为a,34,a="main(a){printf(a,34,a=%c原创 2007-04-21 20:08:00 · 1610 阅读 · 0 评论 -
在结构体最后定义一个长度为0的字符数组(技巧)
转载请加注:Qdieyou定义一个结构体如下:typedef struct buffer_s { int a; int buffer_no; int flags; unsigned char data[0];} buffer_t; 大家注意到最后那个长度为0的字符数组了吧?不知道你疑惑了没。嘿嘿!!!这个常用技巧常用来构成缓冲区:数组名就代原创 2007-04-21 20:42:00 · 2639 阅读 · 0 评论 -
struct成员对齐小解
转载请加注:Qdieyou 修正:2007年5月20日注:以下理论只供参考,建议使用前使用sizeof来进行测试。谢谢!先来看一段代码:struct A { short a; long b;};struct B { char c; struct A s1; short d;};struct C { char c; char a; int b;};in原创 2007-04-26 12:54:00 · 1603 阅读 · 1 评论 -
程序出错,你回滚了吗?
转载请加注:Qdieyou请大家观察下以下代码片段:FILE *fin;FILE *fout;fin = fopen("test.txt", "r");if (fin == NULL) { return 0;}fout = fopen("good.txt","w");if (fout == NULL) { return 0;}两次打开文件都进行了防错设计,但是却忽略了程序回滚,原创 2007-04-24 19:07:00 · 1451 阅读 · 0 评论 -
assert(断言)的使用
原创作者:Qdieyou,转载请加注。程序一般分为Debug 版本和Release 版本,Debug 版本用于内部调试,Release 版本发行给用户使用。(这个概念可能不大好理解,想想VC下,调试时有个选项,一个是debug,一个是release)assert(表达式); 的意思是:当表达式为真时,程序继续运行,如果表达市为假,那程序就会停止运行,并提示错误信息。注意:assert是一原创 2007-05-13 10:53:00 · 1447 阅读 · 0 评论