typedef:
使用:
typedef int Integer;//给int起一个别名,定义了一种新的数据类型,和int,double等级的
typedef Integer MyInteger;
typedef unsigned int UInteger;
//#define Integer int//
int main(){
-----int a=1;
-----Integer b=9;
-----UInteger c=11;
-----MyInteger d=213;
}
与指针:
char *s=”itcast“;
typedef char * String;
String s1=”itcast“;
与结构体:
typedef struct{//此处删除了结构体名,因为完全可以省略
-----float x;
-----float y;
} Point;
Point p={10,10);
与指向结构体的指针:
typedef struct Point{//可以省略Point
-----float x;
-----float y;
} * PP;
struct Point point={10.0f,20.0f};
PP pp=&point;//pp不用加*,是因为PP代表了(结构体 *)
printf(”x=%f,y=%f\n“,pp->x,pp->y);//x=10.000000,y=20.000000
与枚举:
typedef enum {spring ,summber,autumn,winter} Season;
Season s=spring;
与指向函数的指针:
首先复习一下指向函数的指针:
int sum(int a,int b){
-----int c=a+b;
-----return c;
}
void test(){
-----int (*p)(int,int);
-----p=sum;
-----(*p)(4,5);
}
使用typedef:
void test(){
-----typedef int(*SumPoint)(int,int);//这种方法和之前的不一样,SumPoint就是别名。
-----SumPoint p=sum;
----(*p)(4,5);
}
类似宏定义:
typedef char * String1;//String1最好用这种方式起别名,把char * 当作一个整体String1就是一种类型。
#define String2 char * //String2
-----String1 s1,s2;
-----//char *s3,s4;//char *s3;char s4;纯粹是字符串替换
-----String2 s3,s4;//s1,s2,s3都是指针变量,只有s4才是普通的char类型。