• 变量和常量


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

    分类:整型常量、实型常量、字符常量(由单引号引起来的字符或转义字符: , ,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意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。 

  • 相关阅读:
    May 9, 17:3020:00, 1479, "Concentrationcompactness/Rigidity method" lecture 4 by Yang Lan
    May 21, 10:0011:00, 1303, "Capacity, Primeter and ADMmass " by Jie Xiao
    课程期末安排
    问题: Schrodinger方程的广义Strichartz估计
    May 21, 11:1012:10 "On small solutions for nonlinear wave equations in exterior domains " by Makoto NAKAMURA
    SQL Server2019数据库备份与还原脚本,数据库可批量备份
    记一次 IIS 站点配置文件备份和还原,物理路径文件批量备份
    从网上收集的一些图片方面的操作
    android获取本地IP
    java利用httpconnect向服务器发送信息与接收回馈信息
  • 原文地址:https://www.cnblogs.com/muzihuan/p/5207227.html
Copyright © 2020-2023  润新知