zoukankan      html  css  js  c++  java
  • 变量和常量

    常量:在程序执行过程中值不会发生变化的量。

    分类:整型常量、实型常量、字符常量(由单引号引起来的字符或转义字符: , ,17等)、字符串常量,标识常量(#define)

    变量:用来保存一些特定内容,并且在程序执行过程中随时会发生变化的量。

    [存储类型]  数据类型  标识符   =  值

                     TYPE     NAME =  VALUE ;

    标识符:给某段内存空间起个名字而已,尽量做到见名生义

    存储类型:auto static register extern(说明型关键字)

    auto:默认,自动分配空间,自动回收空间。在栈上

    register(建议型):寄存器类型,资源少速度快,只能用于局部变量,不能定义全局变量,只能定义32位大小的数据类型(32位环境),寄存器中没有地址,所以一个寄存器类型的变量无法打印出地址查看或使用。

    static(静态型):自动初始化为0或空值,并且有继承性。

    extern(说明型):不能够改变被说明的变量的值。

    =============================================

    #define  宏名   (宏体)   //并不做语法检查

    eg:#define  PI  3.1415

    define可以带参数

    #define  MAX(a,b)  ((a)>(b) ?(a):(b))

    ==============================================

    #define在预处理的过程中处理,占用的是编译时间

    函数在调用的位置,对当前的执行现场进行压栈保存,然后跳往函数的入口地址执行,函数执行完毕后,弹栈恢复现场,占用的是运行时间

    ==============================================

    进程的内存布局:

    代码段:代码段是用来存放可执行文件的操作指令,也就是说是它是可执行程序在内存中的镜像。代码段需要防止在运行时被非法修改,所以只准许读取操作,而不允许写入(修改)操作——它是不可写的。

     数据段:数据段用来存放可执行文件中已初始化全局变量,换句话说就是存放程序静态分配的变量和全局变量。

    BSS:BSS段包含了程序中未初始化的全局变量,在内存中 bss段全部置零。

    堆(heap:堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)

    :栈是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。 

  • 相关阅读:
    Linux下查看tomcat版本
    React跳转路由传参3种方法和区别
    pc端布局方案
    vue针对搜索引擎做SEO优化
    vue-cli3配置vue.config.js持续更新
    MySQL连接语法(多表查询)
    MySQL约束和外键约束
    MySQL数据库查询
    MySQL数据库入门
    jQuery用法和bootstrap框架
  • 原文地址:https://www.cnblogs.com/muzihuan/p/5207227.html
Copyright © 2011-2022 走看看