摘要: http://blog.csdn.net/zhongjiekangping/article/details/5164132 这篇文章讲的真好! 对于 "expr1 + expr2",(其中expr1,expr2都可能是复合表达式),不同的编译器想先算exp1就先算exp1,想先算exp2就先算exp 阅读全文
posted @ 2017-08-12 20:58 颜小雀 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 《C专家编程》最后一段讲面试,说是微软曾经有一道面试题:写一段代码,确定一个变量是有符号数还是无符号数?首先,任何试图用函数来解决此问题的方法都不好使,因为函数有类型检查,所以只能用宏啦。书中给出了一个宏:#define ISUNSIGNED(a) (a>=0 && ~a>=0)它只能用在K&R C 阅读全文
posted @ 2017-08-12 19:50 颜小雀 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 在<c专家编程>中第230--231页,讲述了使用指针返回一个数组的方法 文章首先要求声明一个函数,这个函数描述成 返回一个指向包含20个int元素的一维数组的指针。 这个声明没有错,编译可以通过。 但是在函数实现的时候,书上如下 编译时报错! 因为calloc返回一个int*的类型,而我们的pea 阅读全文
posted @ 2017-08-12 16:48 颜小雀 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 1:在windows平台上,使用conio.h 函数库 getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上. 2:linux上没有conio.h 函数库,但是可以 可以使用curs 阅读全文
posted @ 2017-08-11 09:10 颜小雀 阅读(2553) 评论(0) 推荐(0) 编辑
摘要: qsort () 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); qsort()地四个函数是自定义的函数排序方式,可以对一个结构体 阅读全文
posted @ 2017-08-10 21:57 颜小雀 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 对于一下代码: 你确定他打印的是1吗? 运行之后发现结果是 4 ! C语言 类型转换比一般人想像的还要多,在涉及小于int 和 double 的表达式中 , 都有可能出现类型转换! 根据提升规则:它由char 转换成为 int 。这个特性叫做类型提升 ! 下表给出了常见的类型提升的列表: char 阅读全文
posted @ 2017-08-09 21:24 颜小雀 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 有两个与函数有关,一个与表达式计算有关 1:堆栈为函数内部的声明与局部变量提供存储空间 2:进行函数调用时,堆栈存储与此有关的一些维护性信息,被称为过程活动记录,它包含函数的调用地址,任何不适合装入寄存器的参数以及一些寄存器的值的保存。 3:可以作为临时缓冲区,比如计算一个很长的表达式时 ,可以先将 阅读全文
posted @ 2017-08-06 19:45 颜小雀 阅读(1748) 评论(0) 推荐(0) 编辑
摘要: 只需记住下面内容: 声明相当于普通的声明:他所说的并非自身,而是描述其他地方创建的对象。 定义相当于特殊的声明: 她为对象分配内存。 C语言中:只能有一个定义,可任意多个声明。 阅读全文
posted @ 2017-08-06 12:08 颜小雀 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 经预处理后,第二行变为 int * point1,point2. 这就意味着,point1 是一个指向int的指针,但是 point2却是 int类型的了。 所以,宏定义的连续变量的定义中 ,不能保证所有的变量为同一样的类型!! typedef不同,他可以保证连续性。 另外: 这句话是没有问题。 但 阅读全文
posted @ 2017-08-06 11:43 颜小雀 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 稍微的说明一下,在这个初始化的33个数组中,1 代表活着,0代表死亡,每次到7的时候,就把该元素的值置为0,每次杀人前都要检查一遍是否还要继续杀人了,因为要留下最后一个人。 阅读全文
posted @ 2017-08-06 10:59 颜小雀 阅读(145) 评论(0) 推荐(0) 编辑