- 论坛徽章:
- 0
|
1: Get a valid pointer
2: >=5
3: 不懂compzero是什么意思,另外你的前提是int是16位的才是0xFFFF,如果是32位的int,你这个compzero就是65535
4:typedef 为一种类型引入新的名字,而不是为变量分配空间。 typedef同样具有与其他声明一样的混乱语法,同样可以把几个声明塞到一个声明中去。对于结构,除了可以在书写时省掉struct之外,typedef并不能提供显著的好处,而少写一个struct其实并没有多大帮助。在某些方面,typedef类似于宏文本替换,但它们之间存在一个关键性的区别,主要体现在两个方面:
首先,可以用其他类型说明符对宏类型名进行扩展,但对typedef所定义的类型名却不能这样作,比如:
#define int32 int
unsigned int32 i; /*没问题*/
typedef int int32_t
unsigned int32_t j; /*错误!*/ |
其次,在连续的几个变量声明中,用typedef定义的类型能够保证声明中所有的变量均为同一种类型, 而#define定义的类型则无法保证。
例如#define int_ptr int *
int_ptr pa, pb; /* pa位指针型,pb为int */
typedef int* int_ptr_t
int_ptr_t pi, pj; /*pi, pj类型相同,都为指针*/ |
typedef应该用在:
数组、结构、指针以及函数的组合类型。
可移植类型。
typedef也可以为后面的强制类型转换提供一个简单的名字
应该始终在结构的定义中使用结构标签,即使它并非必须,这种做法可以使代码更为清晰 |
|