
C语言
TZJ0844321
一点都不NB的人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
宏定义
要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。 看下面的例子: #define MALLOC(n, type) \ ( (type *) malloc转载 2012-03-26 16:00:54 · 321 阅读 · 0 评论 -
C语言中的浮点数
1.避免对两个实数做是否相等的判断因为实数在计算机中的实际存储和我们现实定义的实数大小之间存在误差。例如: float a = 5.1 ,在计算机实际运算的过程中,因为a被定义成浮点数,采用的是近似值,实际上可能并不等于5.1,可能等于5.09999之类的所以当你用 a== 5.1做判断的时候,肯定是不行的2.尽量不要使用浮点数作为循环变量3.避免直接使用差距很大的两个数进行相转载 2012-03-29 15:30:45 · 648 阅读 · 0 评论 -
C语言中的零值比较
1.int型与零值比较if(n == 0)if(n != 0)2.布尔型与零值比较if( boolflg )if( !boolflg )3.指针与零值比较if( p == NULL )if( p != NULL )4.float型与零值比较const float EPSION = 0.000001if( x >= -EPSION && x =因为f转载 2012-03-29 15:12:38 · 1020 阅读 · 0 评论 -
计算十进制数中对应2进制数的1的个数
例如:输入整数n,对应求法如下for(c=0; n; ++c){ n&=(n-1);}return cn&=(n-1)是清除n最右边的1,如(1000)= 7(0111)+ 1(0001),所以8 & 7 = (1000)&(0111)= 0(0000),清除了8最右边的1转载 2012-03-29 17:00:15 · 951 阅读 · 0 评论 -
const的注意点
非指针参数(也就是传值参数)不会被修改原始值,const 对它是没有意义的.const 只用于指针.1. 第一种用法: const 类型 *变量:这种用法将限制修改指针指向的值.#include int fun(const int *p) { *p += 1; /* 只有去掉 const 这句才可以执行 */ return *p;}int main转载 2012-03-12 14:50:52 · 313 阅读 · 0 评论 -
字符串替换函数
#include #includeint replace(char *s,char *s1,char *s2); int main() { char *s1 = "AC"; char *s2 = "xx"; char s[10] = "ACDEACAAC"; printf("%s", s);原创 2012-03-13 09:10:45 · 323 阅读 · 0 评论 -
字符替换(包含多个字符的替换)
#include int replace(char *s,char *s1,char *s2); int main() { char s[20]="ABCBA",s1[10]="AC",s2[10]="ac";int k; printf("\n\ns=");puts(s); printf("\ns1="); puts(s1);转载 2012-03-12 17:18:42 · 466 阅读 · 0 评论 -
字符串倒转函数
#include#includemain(){ char str[]="hello,world"; int len=strlen(str); char t; for(int i=0; i { t=str[i];转载 2012-03-13 14:35:14 · 411 阅读 · 0 评论 -
sizeof与数组
sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的静态定义的数组,作为参数传给函数时,在函数内部只是一个指向数组的指针,所以使用sizeof计算出来的大小为指针的大小,一般为4原创 2012-03-26 17:02:51 · 387 阅读 · 0 评论 -
指针加减操作的单位
&+数组名+整形,表示数组首地址+数组的大小偏移量例如:int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);*(ptr -1 ) 则等于a[4]原因是指针大加减操作单位根据指针的类型的来定的在这里,[&+数组名]指针的类型是数组指针,加减操作的一个单位一个该数组的大小(sizeof(数组长度*数组元素类型))理所当然,例如int* p原创 2012-03-26 17:07:56 · 446 阅读 · 0 评论 -
C语言的移位运算
1.左移无论是有符号数还是无符号数,全部采用逻辑左移,补位加02.右移采用算术右移,符号位不变,符号位的值为1,则补位加1;反之,则补位加0无论左移还是右移,当移动的长度超过该类型的2进制位数,则取移位的位数和类型的位数的余数进行移位算术右移和逻辑右移的区别是:算术右移不右移符号位,即最高位,右移后前补0还是1取决于符号位的值;逻辑右移执行时将移动符号位,右移后前补0转载 2012-03-29 16:59:38 · 728 阅读 · 0 评论