C/C++
yangjin_unique
这个作者很懒,什么都没留下…
展开
-
va_list、va_start、va_arg、va_end的原理与使用 (转)
概述 由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论. 定义 大家先看几宏. 在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义: #define _INTSIZEOF(n) ((sizeof(转载 2012-08-02 22:07:09 · 382 阅读 · 0 评论 -
内存对齐 _INTSIZEOF(n)
问: #define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) 说能够在某些系统中内存对齐.(估计是得到一个2 或者4的整数倍) 这个好象就是(x+3)&~3 这样就能满足对齐了吗? 请从数学上给说说. 谢谢 答(作者:win_hate): 对于两个正整数 x, n 总存在整数 q, r 使得转载 2012-08-02 22:06:12 · 894 阅读 · 0 评论 -
void及void指针含义的深刻解析
void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。 void指针使用规范 ①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如: int *pint; void *pvoid; pvoid = pint; /* 不过不能 pint = pvoid; */转载 2012-08-02 22:09:07 · 414 阅读 · 0 评论 -
C语言:0, '0', '\0', NULL 区别
'0'代表字符0,对应ascii码为48; ‘\0’字符串结束符,对应的ascii码为0,所以while(*a++ != '\0')与while(*a** != 0)等价; NULL定义为(void *) 0,它是一个指针,指向一个地址为0的值,用于指针比较。原创 2012-12-09 18:57:58 · 603 阅读 · 0 评论