用typedef定义类型
1、用typedef声明新的类型名来代替已有的类型名。
例:声明INTEGER为整型
#include "StdAfx.h" #include<stdio.h> #include<stdlib.h> typedef int INTEGER; void main() { INTEGER i=1; int j=2; printf("%d%d\n\n",i,j); }
2、声明结构类型
例:
#include "StdAfx.h" #include<stdio.h> #include<stdlib.h> typedef struct{int month;int day;int year;}DATE; void main() { DATE date_one; date_one.month=3; date_one.day=24; date_one.year=2000; printf("%d-%d-%d\n",date_one.year,date_one.month,date_one.day); }
3、声明NUM为整型
#include "StdAfx.h" #include<stdio.h> #include<stdlib.h> typedef int NUM[100]; void main() { NUM num; printf("%d\n\n",sizeof(num)); }
4、声明p为字符指针类型
#include "StdAfx.h" #include<stdio.h> #include<stdlib.h> typedef char *P; void main() { P p1; p1="Lv"; printf("%s",p1); }
5、声明P为指向函数的指针类型,该函数返回整型值。
#include "StdAfx.h" #include<stdio.h> #include<stdlib.h> typedef void(*P)(); void fun(); void main() { P p1; p1 = fun; (p1)(); } void fun() { printf("lv"); }
注:对数组而言,数组名就是它的地址,它的地址就是它本身。
说明:(1)用typedef可以声明各种类型名,但不能用来定义变量。
(2)用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。
(3)当不同源文件中用到同一类型的数据时,常用typedef声明一些数据类型,把它们单独的放在一个文件中,然后再需要用到的文件中用#include命令把他们包含进来。
(4)使用typedef有利于程序的通用与移植。
(5)typedef与#define有相似之处,但二者是不同的。
区别:#define只是简单的代换,而typedef是如同定义变量一样声明一个类型。