我们都知道#define是一个宏,typedef是起别名,但是具体在代码中是怎么实现的, 他们的区别以及他们都被不同的两个变量赋值后的结果是怎样的.下面的一段代码是我 在X-code里敲的,我觉得是个很好地实例:
#include <stdio.h> #define M int * // 定义一个宏 typedef int * Other; // 给int * 起个别名 Other int main(int argc, const char * argv[]) {
int c = 100; int d = 200; M P1,P2; P1 = &c; // 等价于 int *p1 =&c P2 = d; // 等价于 int P2 = d 如果写成 P2 = &d 系统会报错 printf("指针P1的值是:%d\n",*P1); printf("变量P2的值是:%d\n",P2); //对应的 如果把P2写成 *P2 系统会报错
int e = 250; int f = 300; Other p3,p4; p3 =&e;// 等价于 int *p3= &d p4 = &f; // 等价于 int *p4=&f 如果改成 P4 = f 系统会报错 printf("指针P3的值是:%d\n",*p3); printf("指针P4的值是:%d\n",*p4);// 对应的如果把*p4写成p4 系统会报错 return 0; } 通过上面的例子 我们知道了 typedef和#define的区别: #define : 只是简单的替换 M P1,P2 => int *P1(指针),int P2(变量) typedef: 换名字并且可以参与定义 Other p3,p4;=> int *p3, int *p4(都是指针)
|