关于const是否分配空间和常量折叠的问题
来源:互联网 发布:厦门广电网络数字电视 编辑:程序博客网 时间:2024/05/18 00:14
#include <iostream>
#include <stdlib.h>
using namespace std;
void main() {
const int a = 5;
*(int*)&a = 4;
cout << "是否有地址&a: " << &a << endl << endl;
cout << "内存的值是否修改*(int*)&a: " << *(int*)&a << endl << endl;
cout << "符号是否变化a: " << a << endl << endl;
cout << "解释一下:" << "const int a在编译时期符号a就全部被替换成了5,所以即使用强转指针修改内存也不会改变符号a的值,这是常量折叠导致的!" << endl;
system("pause");
}
#include <stdlib.h>
using namespace std;
void main() {
const int a = 5;
*(int*)&a = 4;
cout << "是否有地址&a: " << &a << endl << endl;
cout << "内存的值是否修改*(int*)&a: " << *(int*)&a << endl << endl;
cout << "符号是否变化a: " << a << endl << endl;
cout << "解释一下:" << "const int a在编译时期符号a就全部被替换成了5,所以即使用强转指针修改内存也不会改变符号a的值,这是常量折叠导致的!" << endl;
system("pause");
}
在VC6.0中甚至可以直接对对象a直接进行(int)a强转内存空间类型的操作直接修改对象a的值,可见const修饰的对象是分配过内存空间的,但是在编译过后通过常量折叠的方法直接把符号a对应位置的内容全部替换为了初始化时的值,所以修改内存改变不了符号a的值!
1 0
- 关于const是否分配空间和常量折叠的问题
- 关于const常量的内存分配问题
- const 可折叠常量和不可折叠常量
- 关于c和CPP下对于const 常量的问题
- const常量折叠
- C++const/常量折叠
- C++ 常量折叠和C语言中const常量对比
- c++学习----const常量折叠
- 关于 #define 和 const 定义常量所回想起的问题
- 关于常量折叠(转)
- 关于常量折叠(转)
- 关于常量折叠(转)
- 关于常量折叠
- C++ 常量折叠问题的理解
- 关于const常量与指针赋值的问题
- 常量折叠问题
- 迭代器的空间分配和失效问题
- const常量的修改问题
- 架设NFS服务器
- hdoj--1881--毕业bg(dfs)
- numpy.array()
- liunx bash 学习记录1
- Android学习(声明)
- 关于const是否分配空间和常量折叠的问题
- javascript入门
- nyoj 6
- LeetCode 100. Same Tree
- iOS 顶部几个按钮切换界面代码
- leetcode-two Sum
- 快速排序的第二种写法
- nyoj 116 士兵杀敌(二)
- 融合计算知识储备