用typedef定义类型
用typedef声明新的类型名来代替已有的类型名
声明INTEGER为整型
typedef int INTEGER
#include <stdio.h>
typedef int INTEGER;
void main()
{
INTEGER i = 1;
int j = 2;
printf("%d, %d\n\n", i, j);
}
声明结构类型
Typedef struct{
int month;
int day;
int year;}DATE;
#include <stdio.h>
typedef struct
{
int month;
int day;
int year;
}DATE;
void main()
{
DATE date_one;
date_one.month = 12;
date_one.day = 31;
date_one.year = 2019;
printf("%d - %d - %d \n", date_one.year, date_one.month, date_one.day);
}
声明NUM为整型数组类型
typedef int NUM[100];
#include <stdio.h>
typedef int NUM[100];
void main()
{
NUM num = { 0 };
printf("%d\n\n", sizeof(num));
}
声明STRING为字符指针类型
typedef char* STRING;
#include <stdio.h>
typedef char* P;
void main()
{
P p1;
p1 = "I love csdn.net";
printf("%s\n", p1);
}
声明 POINTER 为指向函数的指针类型,该函数返回整型值。
typedef int (*POINTER)();
#include <stdio.h>
typedef void(*P)();
void fun();
void main()
{
P p1; // void (*p1)();
char a[10] = "csdn.net!";
printf("%d %d\n", a, &a);
p1 = fun;
(p1)();
}
void fun()
{
printf("I love csdn,net!\n");
}
用typedef定义类型的方法
先按定义变量的方法写出定义体
(如:int i)
将变量名换成新类型名
(例如:将i换成COUNT)。
在最前面加typedef
(例如:typedef int COUNT)
然后可以用新类型名去定义变量
(例如:COUNT i, j;)
关于 typedef的一些说明
用typedef 可以声明各种类型名,但不能用来定义变量。
用typedef 只是对已经存在的类型增加一个类型名,而没有创造新的类型。
当不同源文件中用到同一类型数据时,常用typedef 声明一些数据类型,把它们单独放在一个文件中,然后在需要用到它们的文件中用#include命令把它们包含进来。
使用typedef 有利于程序的通用与移植。
typedef与#define有相似之处,例如:typedef int COUNT;#define COUNT int 的作用都是用COUNT 代表 int。但是,它们二者是不同的。
#define是在预编译时处理的,它只能作简单的字符串替换,而typedef是在编译时处理的。实际上它并不是作简单的字符串替换,而是采用如同定义变量的方法那样来声明一个类型。
区别: typedef 和 define
typedef (int*) p1;
和
#define p2 int*
另外注意,一个有分号,一个没有分号!