标签:
对于多数人来说那些const的用法比如修饰返回值和修饰参数都应该是十分好理解的下来我要讨论
对于C语言中
#include <stdio.h> void main() { const int a=10; int *p =(int*) &a; *p = 100; printf("%d\n",a); }
对于C++中
#include<iostream> using namespace std; void main() { const int a=10; int *p =(int*) &a; *p = 100; printf("%d\n",a); }上边输出10
原因是什么呢,C中为const是一个不能被改变的变量,有内存空间的分配,所以可以在内存中通过地址改变
C++中的const是一个常量,一般是保存在字符表中,不分配内存,只是在方位该变量的时候或者查看变量的地址的时候就会重新分配一个同名变量与const的常量的值相同,所以此时输出的地址是这个新变量的地址,所以通过地址改变的还是这个变量的值,但是输出的时候编译器还是会在符号表里面读取这个常量的值,所以值未改变
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/kai8wei/article/details/47073715