用typedef定义类型的总结分析
如:
typedef int INTEGER;
typedef float REAL;
指定用INTEGER代表int类型,REAL代表float类型,这样,下面的两行等价:
1)int i,j; float a,b;
2)INTEGER i,j; REAL a,b;
可以声明结构体类型:
typedef struct
{
int month;
int day;
int year;
}DATE;
声明了新类型DATE,这时就可以使用DATE定义变量: DATE birthday(不要写成 struct DATE birthday;);DATE* p;//指向结构体类型的指针。
还可以进一步:
1)typedef int NUM[10];//声明整型数组类型
NUM n;//定义n为整型数组变量,其中n[0]--n[9]可用
2)typedef char* STRING;//声明STRING为字符指针类型
STRING p,s[10];//p为字符指针变量,s为指针数组
3)typedef int (*POINTER)();//声明POINTER为指向函数的指针类型,该函数返回整型值,没有参数
POINTER P1,P2;//p1,p2为POINTER类型的指针变量
说明:
1)用typedef可以声明各种类型名,但不能用来定义变量,用typedef可以声明数组类型、字符串类型、使用比较方便。
例如:定义数组,原来是用:int a[10],b[10],c[10],d[10];由于都是一维数组,大小也相同,可以先将此数组类型声明为一个名字:
typedef int ARR[10];
然后用ARR去定义数组变量:
ARR a,b,c,d;//ARR为数组类型,它包含10个元素。因此a,b,c,d都被定义为一维数组,含10个元素。可以看到,用typedef可以将 数组类型 和 数组变量 分离开来,利用数组类型可以定义多个数组变量。同样可以定义字符串类型、指针类型等。
2)用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。
3)typedef与#define有相似之处,但事实上二者是不同的,#define是在 预编译 时处理,它只能做简单的字符串替换,而typedef是在 编译时 处理的。它并不是做简单的字符串替换,而是采用如同 定义变量 的方法那样来 声明 一个类型。
例如:typedef int COUNT;和#define COUNT int的作用都是用COUNT代表int,单事实上它们二者是不同的。
4)当不同源文件中用到 同一类型数据时,常用typedef声明一些数据类型,把它们单独放在一个文件中,然后在需要用到它们的文件中用#include命令把它们包含进来。
5)typedef有利于程序的通用与移植。
您可能感兴趣的文章:
- 用typedef定义类型的总结分析
- 用typedef定义类型详细总结
- 深度分析typedef--定义自己的数据类型
- typedef定义函数类型分析
- 宏定义#define和类型定义typedef区别
- 【1】ptr = malloc(0*sizeof(char))【2】关于typedef的用法总结【3】关于有符号数、无符号数和数据类型的总结 .
- JDBC总结06-JavaBean 的定义、JDBC2.0 新特性、SQL3.0 规范中的新类型
- C语言基础之结构体、共用体、枚举、类型定义typedef
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- 有关typedef定义新的类型名的作用
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- 使用typedef语句定义数组类型
- 模板类中的成员函数定义返回值为类中的typedef类型时候注意
- 工作总结3-typedef中的函数类型与函数指针类型
- glibc之数据类型定义分析
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- 交换两个int类型数值(总结分析,理解记忆)
- c++ typedef类型定义
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- 解决类型重复定义(typedef)的方法