关键字

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]