typedef :自定义一种数据类型
用法1:
代码:
定义一个基本的数据类型;
#include <stdio.h>
typedef char BYTE;//定义一个数据类型 BYTE ,BYTE 跟char 类型一样
int main()
{
BYTE c = 'c';
putc(c,stdout); //打印出char类型c
return 0;
}
用法2:
定义一个指针类型:
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef char *CHARP; //定义一个char类型指针类型
CHARP stradd(CHARP s1, CHARP s2)
{
strcat(s1, s2);
return s1;
}
int main()
{
char c = 'a';
CHARP p = &c; //定义一个CHARP 类型指针
printf("p = %p\n", p);//结果:p = 00B5F8D7
CHARP p1,p2; //定义两个指向 typedef的 CHARP类型 指针变量
char s1[100] = "hello";
char s2[100] = "world";
p1 = s1;
p2 = s2;
CHARP s3= stradd(p1, p2);
printf("s3 = %s\n", s3);//结果:helloworld
return 0;
}
用法3:
定义一个数组类型:
代码:
#include <stdio.h>
typedef char BYTE[] ; //定义一个字符串类型
int main()
{
char c = 'a';
BYTE s = "helloworld";
printf("s = %s\n", s);//结果:s = helloworld
return 0;
}
用法4:
定义一个
结构体数据类型:
代码:
#include <stdio.h>
typedef struct
{
int a;
} A; // 定义一个结构体类型的数据类型
int main()
{
A a ;定义结构A变量a
a.a= 10;
printf("%d",a.a); // 结果:10
}
用法5:
定义一个指向 返回类型为char类型指针、参数为两个char类型指针函数的指针的类型
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef char *(*STRADD)(char *,char *); //定义一个指向 返回类型为char类型指针、参数为两个char类型指针函数的指针的类型 (本例中的stradd函数)
STRADD get_stradd() //定义一个返回类型的STRADD 类型的函数
{
return stradd;
}
//定义一个返回类型为char类型指针、参数为两个char类型指针的函数
char *stradd(char *s1, char *s2)
{
strcat(s1, s2);
return s1;
}
// 定义一个参数类型有函数的的指针
char *test(STRADD p, char *s1, char *s2)
{
return p(s1, s2);
}
int main()
{
char s1[100] = "hello";
char s2[100] = "world";
char *s3= test(stradd,s1, s2);//测试test 函数,结果:s3 = helloworld
printf("s3 = %s\n", s3);
STRADD array[10]; //定义一个函数数组
return 0;
}
typedef 对定义复杂的数据类型有着不可替代的作用,多用!!!