文章目录提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 前言
- 一、C++中的const
- 总结
前言
今天在学习C++时发现了一个很有意思的现象一、C++中的const
#includeusing namespace std; int main() { const int a = 10; int* p = (int*)&a; int b[a]; cout << sizeof(b) << endl; *p = 100; int c[a]; cout << sizeof(c) << endl; cout << *p << endl; cout << a << endl; return 0; }
结果为40 40 100 10
总结因为数组大小是在编译前确定的,此时没有给a开辟空间,只是用a来指代常量10,因此得到两个数组大小都是10
程序中已明确指定要使用a的地址,因此编译时会为a开辟空间,可以正常通过指针修改内存空间的值,内存空间的值被修改为100(注意修改的不是a的值,而是内存空间的值)
由于a已经指定是常量,效果等同于#define a 10,因此输出a的值时,结果仍然为10



