![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
Eighteenzi
这个作者很懒,什么都没留下…
展开
-
c语言NULL和0区别
转载自:http://www.cnblogs.com/youxin/archive/2012/03/27/2420023.html先看下面一段代码输出什么:#includeint main(){ int *p=NULL; printf("%s",p); }输出(null) ,单步调试可以看出执行int *p=NULL,p的值为0x0000000转载 2012-08-03 16:17:25 · 23738 阅读 · 2 评论 -
内存分配地址的对齐
void * memalign (size_t boundary, size_t size) 看nginx源代码中的实现#define ngx_align(d, a) (((d) + (a - 1)) & ~(a - 1)) 返回的地址值为d后第一个是a的整数倍的值。a是2的整数次幂。假设a = 2^n,即a的二进制表示中末尾有n个0。假设返回的结果为A。则A-d的原创 2012-08-03 18:35:01 · 1270 阅读 · 0 评论 -
C语言中size_t的陷阱
今天写了一个类似这样的程序:#include #include int main(){ int i = -1; if(i > strlen("Demon")) printf("Hello World"); else printf("Hello Demon"); return 0;}输出的竟然是Hello Wor转载 2012-08-09 11:43:05 · 1592 阅读 · 0 评论 -
字符串变小写
ngx代码中,字符转化为小写的宏是:#define ngx_tolower(c) (u_char) ((c >= 'A' && c 如果c在[A, Z]之间,与上0x20,就会变成小写的字符。原因是A === 0x41,Z===0x5A,41的二进制表示为0100 0001,5A的二进制表示为0101 1010,而0x20的二进制表示为0010 0000。大写字母的高4位中的第三位原创 2012-08-08 10:31:08 · 768 阅读 · 0 评论