zoukankan      html  css  js  c++  java
  • typedef与define区别

    #define 是预处理指令,简单的进行文本替换。

    typedef 是编译时处理,作用是给已经存在的类型取一个别名。

    由于以上根本原因,导致一下几种区别:

    1.#define不会做正确性检查,typedef会。

    2.#define可以使用其他说明符对宏名进行扩展,typedef不可以。

    3.可以使用typedef可以使用sizeof,#define不可以。

    4.typedef是一个语句,所以必须以;结尾,#define没有

    5.对指针的操作不同

    Typedef int * pint;  
    #define PINT int *  
    Const pint p;//p不可更改,p指向的内容可以更改,相当于 int * const p;  
    Const PINT p;//p可以更改,p指向的内容不能更改,相当于 const int *p;或 int const *p;  
    pint s1, s2; //s1和s2都是int型指针  
    PINT s3, s4; //相当于int * s3,s4;只有一个是指针。 

    #define简单的进行文本替换,所以导致问题出现,相关题目。

    #define MAX(x,y) (x)>(y)?(x):(y)
    
    int main()
    {
    
        int a=5,b=2,c=1,d=3,t;
    
        t=MAX(a+b,c+d)*10;
        
        cout<<t<<endl;
    }
    #define SQR(X) X*X
    
    int main()
    {
        int a,k=2,m=1;
    
        a=SQR(k+m)/SQR(k+m);
        
        cout<<a<<endl;
    }
    #define MAX(a,b) (a++)>(b)?(a++):(b)

    相关资料:http://developer.51cto.com/art/201104/256060.htm

  • 相关阅读:
    HDU_5057_分块
    HYSBZ_2002_分块
    HDU_1166_树状数组
    HDU_5692_dfs序+线段树
    多重背包
    二进制中一的个数
    康托展开
    vector, map, queue,set常用总结
    错误票据
    高精度计算
  • 原文地址:https://www.cnblogs.com/huangcongcong/p/4003916.html
Copyright © 2011-2022 走看看