C零散知识点汇总之typedef关键字
typedef -----> type rename而不是type define。
typedef的真正含义是给一个已经存在的数据类型(是数据类型而不是变量)取一个别名,而非定义一个新的数据类型。
typedef和#define的区别
1、功能不同:typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。 #define是预处理指令。
2、执行时间不同:typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能。#define则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查。
3、作用域不同:#define没有作用域的限制,只要是之前预定义过的宏,在以后的程序中都可以使用。而typedef有自己的作用域。
4、修饰指针类型时不同:
Typedef int * pint; #define PINT int * Const pint p; //p不可更改,p指向的内容可以更改,相当于 int * const p; Const PINT p; //p可以更改,p指向的内容不能更改,相当于 const int *p;或 int const *p; pint s1, s2; //s1和s2都是int型指针 PINT s3, s4; //相当于int * s3,s4;只有一个是指针。