zoukankan      html  css  js  c++  java
  • 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 = '';
    
        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是个好习惯

  • 相关阅读:
    Pycharm中安装第三方库
    Cookie&Session区别
    在线AES加解密
    Python_base_正则表达式
    POST四种常见的传参区别
    SQL基础语法与规则
    SQL的4种连接
    Python_base_Log
    <11>Golang基础进阶——指针
    Shell脚本——特殊变量
  • 原文地址:https://www.cnblogs.com/yangtze736-2013-3-6/p/4083536.html
Copyright © 2011-2022 走看看