
C语言小技巧
www.wowothink.com
分享!!!
展开
-
计算结构体成员偏移量
问题写一个宏计算出结构体成员的偏移量。 假设有如下一个结构体,要计算成员c的在结构体中的偏移量。typedef struct Type_t{ char a; // 0 int b; // 4~7 double c; // 8~16};注意,上述的结构体必须考虑字节对齐的问题。方法一我们可以声明一个Type_t结构的变量type,然后将成员c的地址减去成员a的地址就是原创 2016-09-07 22:56:02 · 10046 阅读 · 0 评论 -
大数相除算法
简介在实际的项目中,同事在移植一个算法时候碰到要进行64位整数的除法运算。找了一下一下,Linux内核中有支持该运算的函数do_div(),该函数在 Linux/arch/arm/include/asm/div64.h 文件中实现。看不太懂其具体的实现方法,于是我就想能不能自己写一个大数相除的算法。下面就是算法的内容,如有不足之处,敬请指正。注:在以下公式以及代码中,名字的含义如下: m原创 2016-08-05 21:38:04 · 10313 阅读 · 0 评论 -
C语言移位运算符精度问题
如果有写过单片机或者嵌入式系统的裸机驱动,很多编译器对于除(/)操作需要执行多个指令才能完成。于是为了节省指令,经常把除(/)的操作转换成向右移位来完成。但是,在运用移位运算符的过程中需要考虑到精度的问题,有可能在移位的过程中,损失掉了精度。正是没注意到该问题的存在,导致了在一个项目中一个bug的产生。特此记录。等价左右移位大家都知道左移n位相当于乘以2的n次方,右移m位相当于除以2的m次方。原创 2015-04-23 22:37:40 · 3199 阅读 · 1 评论 -
C 二维数组动态分配和释放
转载自:http://www.cnblogs.com/huashiyiqike/articles/2887082.htmlC 二维数组动态分配和释放(1)已知第二维Code-1char (*a)[N];//指向数组的指针a = (char (*)[N])malloc(sizeof(char *) * m);printf("%d\n", sizeof(a));//4,指针prin转载 2015-02-11 10:18:25 · 1586 阅读 · 0 评论