1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
#include <iostream> // 输出流库 using namespace std; // 使用标准命名空间 // 全局变量 int all_a = 10; int all_b = 10; // const修饰全局变量,全局常量 const int con_all_a = 10; const int con_all_b = 10; // 课程:核心编程day1 - 认清内存四区之代码区、全局区 /* 代码区:存放函数体的二进制代码,有操作系统进行管理 全局区:存放全局变量、静态变量、常量 栈 区:由编译器自动分配释放,存放函数和参数值,局部变量等 堆 区:有程序员分配和释放,若程序员不释放,程序结束时由系统回收*/ // 程序入口函数 int main() { system("chcp 65001"); // 临时设置UTF-8编码 // 创建局部变量 int a = 10; int b = 10; //(int) = 强制转为整数型 &取变量地址(16进制) cout << "------ 局部变量 ------" << endl; cout << "变量地址a为:" << (long long)&a << endl; cout << "变量地址b为:" << (long long)&b << endl; cout << "------ 全局变量 ------" << endl; cout << "变量地址all_a为:" << (long long)&all_a << endl; cout << "变量地址all_b为:" << (long long)&all_b << endl; // 创建静态变量 static int t_a = 10; static int t_b = 10; cout << "------ 静态变量 ------" << endl; cout << "变量地址t_a为:" << (long long)&t_a << endl; cout << "变量地址t_b为:" << (long long)&t_b << endl; // 常量 字符串常量,所有双引号包含的均为常量 cout << "------ 常 量 ------" << endl; cout << "常量地址为:" << (long long)&"这是常量" << endl; // const修饰的局部变量 const int con_a = 10; const int con_b = 10; cout << "------ 局部常量 ------" << endl; cout << "常量地址con_a为:" << (long long)&con_a << endl; cout << "常量地址con_b为:" << (long long)&con_b << endl; cout << "------ 全局常量 ------" << endl; cout << "常量地址con_all_a为:" << (long long)&con_all_a << endl; cout << "常量地址con_all_b为:" << (long long)&con_all_b << endl; system("pause"); // 控制台暂停,等待下一步操作 return 0; // 结束返回值:0 } /* 这里是因为基于Linux内核只的64位系统上指针类型占用8个字节, 而int类型占用4个字节,所以会出现loses precision. 可以先将int 转成long类型,long类型可以隐式类型转换到int类型。直接修改为long long即可 命名 c -> const 常量关键字 g -> global 全局、全部的意思 l -> local 当前、局部的意思 不在全局区中 局部变量 const修饰的局部变量(局部常量) 在全局区中 全局变量 静态变量 static关键字修饰的变量 常量 字符串常量 const修饰的全局变量(全局常量) */ |
10.2 内存四区-全局区
未经允许不得转载:Ai分享 » 10.2 内存四区-全局区