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;


     

  • 相关阅读:
    安装oh-my-zsh
    Ubuntu下安装2017版QQ
    Ubuntu安装Git
    链接libtorrent库时出现的问题
    ubuntu 下重装mysql若干问题
    最简单的epoll的使用范例 : 监听 标准输入 ,并将数据回显到终端
    [转]Linux下CodeBlocks的交叉编译
    各种免费素材下载站点
    Qt5:图片彩色键控,设置图片中指定颜色的像素为透明
    C++:预处理指令
  • 原文地址:https://www.cnblogs.com/myblesh/p/2248929.html
Copyright © 2011-2022 走看看