#define是 宏定义命令,#define DINT int相当于将代码中的int可以写为DINT,DINT等价于int。typedef int TINT; 是类型定义,TINT类型的变量就是int类型的变量。
1.typedef int TINT; 和#define DINT int
2.typedef char *SINT; 和#define PINT char*
结论:typedef 是类型定义,将数据类型重新命名,所以在经过typedef重新命名之后,SINT a,b;这句代码定义的就是两个字符型的指针,相当于char *a;char *b;。而define只是代码替换,PINT a,b;这句代码定义的是一个字符型指针a,一个只是普通字符变量,相当于char *a;char b;。
关于define 宏定义代码替换的例子。
#include <stdio.h>
#define MIN(x,y) (x)<(y)?(x):(y)
int main()
{
int i=10;
int j=15;
int k;
k=10*MIN(i,j);
printf("%d\n",k);
return 0;
}
调试之后k的结果是15,而不是150。其中有一个过程是k=10*x<y?x:y,在这里不是先计算MIN(x,y)里的值,而是将其替换,先计算10*x。
#include <stdio.h>
#define N 3+1
#define Y(n) ((N+1)*n)
int main()
{
int z;
z=2*(N+Y(5+1));
printf("%d\n",z);
return 0;
}
关键步骤z=2*(3+1+((3+1+1)*5+1))=60,注意在替换Y(n)时,最后乘以n是直接用5+1替换n,不是(5+1)替换。