C/C++中 const的不同含义


     在C中const所表示的意思是变量对应的值是不可修改的;然而这个小小的保证也只是看起来如此,程序员完全可以通过强制类型转换,随意修改cosnt变量对应的内存位置的值。

    在C++中const表达了双重意味:常量&不可修改。前者保证对所有使用到标识符地方,自动用对应的常值进行替换;后者则保证除非使用const_cast去除const属性,否则任何对const变量的修改都被视为非法操作。

    以下的两个程序很好的表明了C和C++中const的区别

   
// const.c

#include 
< stdio.h >

int  main ( void )

{

        
const int a=100;
        
int * b= (int *) (&a);


        printf(
"before evaluation ");
        printf(
"a:%p=%d ",&a,a);
        printf(
"b:%p=%d ",b,*b);


        
*b=99;

        printf(
" after evaluation ");

        printf(
"a:%p=%d ",&a,a);
        printf(
"b:%p=%d ",b,*b);

        
return 1;

}



// const.cpp
#include  < iostream >
#include 
< cstdio >
using   namespace  std;

int  main ()


{
        
const int a=100;
        
int * b= (int * )(&a);

        printf(
"before evaluaion ");
        printf(
"a:%p=%d ",&a,a);
        printf(
"b:%p=%d ",b,*b);

        
*b=99;
        cout
<<"a+5="<<a+5<<endl;

        printf(
" after evaluaion ");
        printf(
"a:%p=%d ",&a,a);
        printf(
"b:%p=%d ",b,*b);

//      if(a!=*b)
//              cout<<"got changed"<<endl;

        
return 1;
}

你可能感兴趣的:(C/C++中 const的不同含义)