关键字:typedef
简单地用一个新的类型名代替原有的类型名
作用:
1、不同名称代表在干不同的事情typedef int jint;;
2、不同情况下,使用不同的别名
if defined(__cplusplus) //c++
typedef _JNIEnv JNIEnv;
typedef _JavaVM JavaVM;
3.书写简洁
struct Student{
char name[20];
int age;
};
//Age int类型的别名
typedef int Age;
//Age int类型指针的别名
typedef int* Ap;
//结构体取别名
typedef struct Student m_s;
typedef struct Student* p_s;
简写
typedef struct Student{
char name[20];
int age;
}m_s,*p_s;
typedef struct Student{
char name[20];
int age;
}MS,*PS;
//Age int类型的别名
typedef int Age;
//Age int类型指针的别名
typedef int* Ap;
////结构体取别名
//typedef struct Student MS;
//typedef struct Student* PS;
void main(){
Age a = 15;
Ap p = &a;
//结构体变量
MS s1 = { "xiaoming", 20 };
//结构体指针
PS ps = &s1;
printf("name:%s age:%d\n", s1.name, s1.age);
printf("name:%s age:%d\n", ps->name, ps->age);
getchar();
}

说明:
1、以上的方法实际上是为特定的类型指定了一个同义字 ;
2、用typedef只是对已经存在的类型指定一个新的类型名,而没有创造新的类型;
3、用typedef声明数组类型、指针类型,结构体类型、共用体类型、枚举类型等,使得编程更加方便;
4、typedef与#define表面上有相似之处, 但仍有本质区别:
5、当不同源文件中用到同一类型数据时,常用typedef声明一些数据类型。可以把所有的typedef名称声明单独放在一个头文件中,然后在需要用到它们的文件中用#include指令把它们包含到文件中。这样编程者就不需要在各文件中自己定义typefef名称了。
6、使用typedef名称有利于程序的通用与移植。有时程序会依赖于硬件特性,用typedef类型就便于移植。