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

来源:互联网 发布:mac人鱼姬口红 编辑:程序博客网 时间:2024/06/11 16:29
#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 11c++ 编译器    10 11原因:C 和 C++对cosnt变量的处理不同在C编译下,const常量是完全分配了内存空间的,在使用时,是像变量一样来使用的。C++编译器通常会把常量存放在符号表中,如<a,10>,编译时直接从符号表中查。C++编译器通常不会为常量分配内存,但这里取它的地址( (int*)&a ),所以会为它分配内存。此时可以修改内存中存放的值,但不能修改符号表中的那个值。以上都是针对简单常量,如果是复杂的常量如结构体,C++编译器不会复杂到将它们保存符号表中。 一定像c编译器一样给其分配内存*/

0 0
原创粉丝点击