《c陷阱与缺陷》笔记
TODD911
热爱计算机
展开
-
《c陷阱与缺陷》笔记--函数指针
本文转载于:http://www.cnblogs.com/gmh915/archive/2010/06/11/1756067.html函数指针是指向函数的指针变量,即本质是一个指针变量。 int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 指向函数的指针包含了函数的地转载 2013-06-13 09:18:28 · 1337 阅读 · 0 评论 -
《c陷阱与缺陷》笔记--整型常量
如果一个整型常量是以0开头的,那么这个常量被视为八进制;如果一个整型常量是以0x开头的,那么这个常量被视为16进制。#include int main(void){ int a = 0x10; int b = 010; int c = 10; printf("%d\n",a); printf("%d\n",b原创 2013-06-11 13:24:15 · 1320 阅读 · 0 评论 -
《c陷阱和缺陷》笔记--C编译器的注释嵌套
本文转载于:http://www.cnblogs.com/liuxiaoming/archive/2012/08/13/2636831.html某些C编译器允许嵌套注释。请写一个测试程序,要求:无论是对允许嵌套注释的编译器,还是对不允许嵌套注释的编译器,该程序都能正常通过编译,但是这两种情况下程序执行的结果却不同。首先,要说明的是C90只有一种注释风格,就是使用“/*”和“*/”,是没转载 2013-06-13 22:38:15 · 1561 阅读 · 0 评论 -
《c陷阱与缺陷》笔记--extern
创建一个文件叫a.h,它包含了声明:extern int i;需要用到外部对象filename的每个C源代码都应该加上这样一个语句:#include “a.h”最后我们选择一个C源文件,在其中给出i的初始值,我们称这个文件为a.c#include #include "a.h"int i=8;int main(void){ printf("%d\n",i)原创 2013-06-19 20:25:05 · 1209 阅读 · 0 评论 -
《c陷阱与缺陷》笔记--使用errno检测错误
很多库函数,特别是那些与操作系统有关的,当执行失败时会通过一个名称为errno的外部变量,通知程序该函数调用失败。下面的代码利用这一特性进行错误处理:errno = 0;//*调用库函数*/if(errno) /*处理错误*/上面的处理是错误的。要理解这一点,我们不妨假想一下库函数fopen在调用时可能会发生什么情况,当fopen函数为要求新建一个文件以供原创 2013-06-19 20:37:20 · 1993 阅读 · 0 评论 -
《c陷阱与缺陷》笔记--移位运算
#include int main(void){ int a = 2; a >> 32; a >> -1; a << 32; a << -1; return 0;}上面代码编译时出现如下错误:yiwei.c: In function 'main':yiwei.c:5:2: warn原创 2013-06-21 20:11:37 · 6893 阅读 · 0 评论 -
《c陷阱与缺陷》笔记--注意边界值
如果要自己实现一个获取绝对值的函数,应该都没有问题,我这边也自己写了一个:void myabs(int i){ if(i>=0){ printf("%d\n",i); }else{ printf("%d\n",-i); }}但是,这个函数真的没有问题吗?如果i的值为-214原创 2013-06-21 21:18:44 · 1944 阅读 · 0 评论 -
《c陷阱与缺陷》笔记--负数的取模运算
本文转载于:http://blog.sina.com.cn/s/blog_6f5c63ff0100tucb.html我们知道,在不同的语言中,对负数执行取模运算,结果有可能会是不同的。例如,(-11)%5在python中计算的结果是4,而在C(C99)中计算的结果则是-1。truncate除法 && floor除法 在大多数编程语言中,如果整数a不是整数b的整数倍数的话,那转载 2013-06-23 10:51:53 · 1383 阅读 · 1 评论