黑马程序员技术交流社区

标题: #define和typedef的区别 [打印本页]

作者: liminghui    时间: 2015-9-23 09:54
标题: #define和typedef的区别
我们都知道#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(都是指针)


作者: hejianchun    时间: 2015-9-23 10:08
不错 ,一看上课就认真听了 笔记做的挺好
作者: 摆摆    时间: 2015-9-23 10:40
顶一个!
作者: acdd112    时间: 2015-9-23 18:11
笔记做的挺好




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2