您的位置:首页 > 编程语言 > C语言/C++

const 在c c++语言中的不同

2015-06-24 16:35 381 查看
#include <string.h>
#include <stdio.h>
#include<stdlib.h>

int main()
{
const int a = 10;

int* c = (int*)&a;

*c = 11;

printf("a = %d,*(int*)&a = %d\n",a,*(int*)&a);

system("pause");
}
/*
c 语言编译器: 11 11
c++ 编译器    10 11

原因:
C 和 C++对cosnt变量的处理不同

在C编译下,const常量是完全分配了内存空间的,在使用时,是像变量一样来使用的。

C++编译器通常会把常量存放在符号表中,如<a,10>,编译时直接从符号表中查。
C++编译器通常不会为常量分配内存,但这里取它的地址( (int*)&a ),所以会为它分配内存。此时可以修改内存中存放的值,但不能修改符号表中的那个值。
以上都是针对简单常量,如果是复杂的常量如结构体,C++编译器不会复杂到将它们保存符号表中。 一定像c编译器一样给其分配内存
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ c 语言 const