#define和typedef的简单区别及使用

来源:互联网 发布:淘宝上新微淘不显示 编辑:程序博客网 时间:2024/06/11 18:51
/* ============================================================================ Name        : TestDefine.c Author      : lf Version     : Copyright   : Your copyright notice Description : #define和typedef的简单区别及使用 1 两者执行时间的差异   #define是宏定义,发生在预处理阶段,即编译之前.        它只进行简单而机械的替换,而不进行任何检查.   typedef在编译阶段有效.由于是在编译阶段,因此typedef有类型检查的功能. 2 两者作用的差异   typedef用于给一个已经存在的类型一个别名.   #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查.例如:   #define PI 3.14        在预处理时s=PI*r*r会替换为s=3.14*r*r 3 写法上的区别.   typedef语句以;结尾,但是#define语句末尾处无;        其实预处理的语句(#)的结尾都没有;号,比如#include <stdio.h> ============================================================================ */#include <stdio.h>#include <stdlib.h>//利用#define定义变量NUMBER,其值为9527#define NUMBER 9527void printFun(int i);//利用typedef将int定义成INTEGERtypedef int INTEGER;//利用typedef定义数组.//定义的intArray数组存放整数且大小为10//它的通用定义方式为://typedef <元素类型关键字><数组类型名>[<常量表达式>];typedef int intArray[10];//利用typedef定义结构体typedef struct {char name;int age;}student;//利用typedef定义函数指针typedef void (*printFunP)(int);int main(void) {testTypedef();testDefine();return EXIT_SUCCESS;}void testTypedef(){INTEGER i=5;printf("INTEGER i=%d\n",i);printf("=============\n");intArray array={1,2,3,4,5,6,7,8,9,0};int j;for (j = 0; j < 10; j++) {printf("j=%d\n",j);}printf("=============\n");student s;s.name='L';s.age=25;printf("name=%c,age=%d\n", s.name, s.age);printf("=============\n");//利用之前定义的函数指针printFunP printFunPointer;printFunPointer=printFun;    (*printFunPointer)(27);    //(printFunPointer)(27);//一样}void printFun(int i){printf("i=%d\n",i);printf("=============\n");}void testDefine(){printf("number=%d\n",NUMBER);}

1 0
原创粉丝点击