const,#define和typedef

来源:互联网 发布:c 连接mysql 编辑:程序博客网 时间:2024/05/14 06:32
1.const 和#define 区别:

    <1> const声明的常量司一阁“run-time”概念,它在程序中存在,并且可以被调用,传递,而#define 常量是一个“compile-time”概念,它的生命在编译器,而在实际程序中,它只是一个常数,一个命令中的常数,没有实际的存在。

        const 常量存在于程序的数据段,而#define常量存在于程序的代码段

       
        优缺点:
        
            如果想在程序中向粗鲁的修改常数的值,就得用const,因为#define定义的常量不是实际存在的。
            一般的常数应用,选择#define

            #define Pi 3.1415926
            float angel;
            angel=30*Pi/180;
            
           当程序进行编译的时候,编译器会首先将“#define pi 3.1415926”后面的代码中的"Pi"全部换成“3.1415926”,然后再进行编译。


2.#define和typedef的区别:
    typedef 用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间

    typedef int INT;
    type int*   pINT;

    typedef 增加了代码的可读性标识符的灵活性,但是也有“非直观性”特点。

    一般情况下,二者功能类似,但是基本遵循#define定义“可读”的常量以及一些宏语句的任务,typedef为标识符或者说是关键字起别名。

    #define 是简单的文本替换。

    typedef (int*)  pINT1;

    #define pINT2  (int *)

    pINT2 a,b  =》 int* a,b;                  pINT1 a,b;    =》 int *a;int *b; 

    显然typedef的最终效果是我们想要的。 所以主张用typedef。












0 0
原创粉丝点击