首页 > 代码库 > c语言小程序
c语言小程序
最近在看c语言的书,觉得还蛮有意思,有点收获,收集了几个优美的小程序,与君共赏!
1)将10进制数装换为任意进制数的小函数
char *baseconv(unsigned int num, int base){ static char retbuf[33]; char *p; if(base < 2 || base > 16) return NULL; p = &retbuf[sizeof(retbuf)-1]; *p = ‘\0‘; do{ *--p = "0123456789abcdef"[num % base]; num /= base; }while(num != 0); return p;}
"abcdef"[5]可以理解为
char *p = "abcdef"; ...p[5]...
数组和下标在c语言中可以互换,所以也可写成5["abcdef"](不提倡哈,原因你懂的)
2)计算无符号整数中为1的位的个数
static int bittab[] = { 0,1,1,2, 1,2,2,3, 1,2,2,3, 2,3,3,4};int bitcount(unsigned int u){ int n = 0; for(; u != 0; u >>= 4) n += bittab[u & 0x0f]; return n;}
有关按位操作也没啥好介绍的,大家想想bittab的构造
3)free函数的封装
void saferFree(void **pp){ if(pp != NULL && *pp != NULL){ free(*pp); *pp = NULL; }}#define safeFree(p) saferFree((void**)&(p))
free函数不会检查传入的指针是否是NULL,也不会在返回前把指针置为NULL。释放指针之后将其置为NULL是个好习惯
c语言小程序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。