关键字
typedef
字面意思,给类型取别名。
和 define 的区别
define 可以替换任何东西,比如常量、编译开关等
define 在编译之前的预处理阶段生效,typedef 在编译阶段生效。
typedef可以只在某个作用域内生效。
int main() {
typedef int size_t;
size_t s = 3;
fun();
}
int fun() {
size_t t = 2; // ERROR
}
- 对指针的修饰不同
含 const 时,两者不等价 TODO
类型别名
typedef unsigned int size_t
结构体别名
typedef struct person{
char name[128];
}Person;
Person a;
函数指针别名
typedef void*(*Fun)
sizeof
sizeof 有两种。一种带括号的,另一种不带。
sizeof 无括号
返回所给类型的字节数。后面只能跟类型名。
sizeof()
返回括号中变量所占字节数。
可以理解为在识别了这个变量的类型后,再使用无括号的 sizeof 返回这个类型占的字节数。
注意:
- 指向数组首元素的指针传入时,只会返回 4。因为传入的是指针变量而不是数组变量(e.g.
int*
和int[5]
)