#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
- #define和typedef的简单区别及使用
- typedef和#define的用法及区别
- typedef和#define的区别及用法
- typedef和define的区别
- typedef 和 define的区别
- define和typedef的区别
- #define和typedef的区别
- Typedef和define的区别
- #define和typedef的区别
- Typedef和define的区别
- #define和typedef的区别
- Typedef和#define的区别
- typedef 和 define的区别
- typedef和#define的区别
- define和typedef的区别
- typedef和#define的区别
- typedef和define的区别
- typedef和#define的区别
- Bestcoder #1 hodj4857
- SQL组装类
- 01. 矩阵乘法
- MySql错误代码1045的解决方案
- 复习数据结构:排序算法(四)——归并排序
- #define和typedef的简单区别及使用
- pat1035 Password
- 02. 高斯消元
- PowerEdge R720可以兼容安装的ESXI
- UVa #1218 Perfect Service (例题9-14)
- 03. 矩阵的逆
- 大数取余
- 日志收集分析系统架构
- 【大数据工程师之路】Hadoop——概述