美文网首页
#define定义的宏和const定义的常量有什么区别?

#define定义的宏和const定义的常量有什么区别?

作者: 宇轩Simid | 来源:发表于2017-06-12 12:24 被阅读0次

    define 定义的宏指令,程序是在预处理阶段将#define定义的宏与内容进行替换,因此在程序运行时,内存的常量区是没有#define定义的宏的,系统并不给他分配内存,而且在编译的时候也不会检查数据类型,出错的可能性大。

    const 定义的常量,是在内存的常量区中的,系统会为他分配内存,在编译的时候会检查数据类型。

    另外:#define 注意边缘效应:

    define N 2 + 3 // 这样定义

    int a = N / 2; // 预想结果应该是2, 但结果却是3

    附:
    static 所定义的变量都是静态变量,存在于内存静态区域,而所有未被初始化的静态变量系统都会给初始化为0.地址为0x00,而且只初始化一次。static控制了变量的作用范围。
    全局变量和static变量都在内存静态区

    static 关键字区别:
    static全局变量和普通的全局变量的区别:static的全局变量只初始化一次,防止在其他的类文件中被使用。

    static局部变量和普通的局部变量的区别:static的局部变量只初始化一次,下一次依据上一次的结果,因为内存地址就一份。

    static函数与普通函数的区别:static函数只在内存中存有一份,而普通的函数在每次调用中都会维持一份拷贝

    相关文章

      网友评论

          本文标题:#define定义的宏和const定义的常量有什么区别?

          本文链接:https://www.haomeiwen.com/subject/olrlqxtx.html