zoukankan      html  css  js  c++  java
  • 变量在内存中的位置

    全局变量与局部变量
    作用域
    全局变量
    1、作用于所在的模块。
    2、在PE结构中,全局变量位于.data节
    3、通过立即数寻址。

    局部变量
    1、与所在函数的作用域一样。
    2、所在地址为栈上。
    3、通过EBP或ESP进行寻址。

    #include "pch.h"
    #include <iostream>
    #define CONST 888
    
    int gInt = 666;
    
    int main()
    {
        /*
        这就是C++中的常量折叠:指const变量(即常量)值放在编译器的符号表中,计算时编译器直接从表中取值,
        省去了访问内存的时间,从而达到了优化。
    
        而在此基础上加上volatile修改符,即告诉编译器该变量属于易变的,不要对此句进行优化,
        每次计算时要去内存中取数。
    
        这里也有个小细节:每种编译器对volatile修饰符的修饰作用效果不一致,有的就直接“不理会”
        */
        const volatile int a = 12345;
        int *p = (int *)&a;
        *p = 456;
        const char *cp = "linux";
        //*cp = "L"; 报错
        printf("a = %d
    ",a);
    
        int lint = 555;
        printf("lint = %d ,gInt = %d
    ", lint, gInt);
    
        std::cout << "Hello World!
    "; 
        system("pause");
    }
  • 相关阅读:
    【HAOI2014】走出金字塔
    【HAOI2008】圆上的整点
    LOJ #116 有源汇点有上下界的最大流
    ZOJ [P2314] 无源汇点有上下界模版
    最小费用最大流模版
    最大流模版 dinic
    最大流模版 EK
    HDU [P1533]
    HDU [2255] 奔小康赚大钱
    POJ [P2289] Jamie's Contact Groups
  • 原文地址:https://www.cnblogs.com/xiangtingshen/p/11368512.html
Copyright © 2011-2022 走看看