很多资料对typedef的定义感觉都不是很准确,下面大概说下自己的理解。
int num;
上面代码的意思是:声明了一个int 类型的变量num。
<span style="font-size:18px;">typedef int num;</span>
没有typedef的时候,int num;num代表的是一个int类型的变量,而加上typedef声明之后,num代表的就是类型了。
<span style="font-size:18px;">typedef int num;
num n1,n2;</span>
上面的代码的意思就是:声明了两个类型为num的变量 n1,n2.因为num原来为int类型的,所以n1、n2也是int类型。
<span style="font-size:18px;">typedef int arr[10];
arr a1,a2;</span>
不加typedef之前,arr 代表长度为10的int类型的数组。
加上typedef之后,表示声明了两个类型为 arr的变量,a1、a2,因为原来arr 表示长度为10的int类型的数组,所以a1、a2都是长度为10的int类型的数组。
<span style="font-size:18px;">typedef void (*fun)();
fun f1,f2;</span>
不加typedef之前,void (* fun)(); fun代表声明一个无参数无返回值的函数指针。
加上typedef之后,表示声明了两个类型为fun的变量f1、f2,因为原来fun是一个无参数无返回值的函数指针,所以f1、f2也是代表无参数无返回值的函数指针。