A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liminghui 中级黑马   /  2015-9-23 09:54  /  771 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们都知道#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(都是指针)

3 个回复

倒序浏览
不错 ,一看上课就认真听了 笔记做的挺好
回复 使用道具 举报
顶一个!
回复 使用道具 举报
笔记做的挺好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马