zoukankan      html  css  js  c++  java
  • 宏与函数,常量的比较关系

    宏与函数的区别:
    (1)内存堆栈:调用函数时  地址放入堆栈,函数执行完后将调用函数的地址从堆栈返回给程序;而宏展开是使用取代标识直接将宏名取代
    (2)时间效应:调用函数需要现场保护 和恢复现场,需要较多时间,但不会使目标程序变长;宏展开在编译时运行,不占用运行时间,但会使目标程序变长
    (3)参数传递:调用有参函数时,先将实参的值复制一份,然后将复制的值传给形参;展开有参宏直接将实参置换形参
    (4)参数类型:有参函数形参必须指定类型;而有参宏中参数是没有类型的,实参可以是任意类型

    使用枚举 和使用#define定义常量  和const关键字的区别(从优缺点比较)
    #Define指令

    优点:申明一次 多次使用;占用内存少,因为无需在内存中分配变量空间
    缺点:唯一的缺点是大多数调试程序无法检查用#define声明的常量

    枚举
    优点:
    易于维护
    易于阅读
    易于调试
    缺点:占用更多的内存:因为使用enum关键字需要为存储的变量分配内存

    const关键字
    const定义符号常量 有类型,在局部常量中仅限于该函数体,且有分号

    局部变量与全局变量区别

    (1)变量类型:局部变量可以是auto,register,static声明的自动类型变量,而局部变量只能是static声明的静态类变量
    (2)生存周期:局部变量在自己作用域可见,而全局变量在整个程序生存周期可见
    (3)内存分配方式:局部变量是动态分配,位于线程堆栈中,如果没有初始化则视当前内存中所存放的值而定;全局变量是静态分配,如果没有初始化值则默认为0;


     

  • 相关阅读:
    唯品会面经
    动态代理两种实现方式
    腾讯运营开发面经
    MySQL一些中重要命令
    金山wps面经
    三七互娱面经
    排序算法之快速排序(Quicksort)解析
    全排列算法分析(原创方法/一般方法/字典序法)
    WinForm如何去掉右边和下边的白边
    Java异常处理机制的秘密
  • 原文地址:https://www.cnblogs.com/myblesh/p/2248929.html
Copyright © 2011-2022 走看看