欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++中的const的用法

程序员文章站 2022-07-04 20:46:59
C语言中的const并不是真正意义上的const,C语言中const变量是只读变量,有自己的存储空间,在C语言中,仍然可以通过间接赋值修改a的值。 实际上,在C++语言中,const建立的是一个符号表。用指针间接赋值的时候,会重新开辟一块内存空间,间接修改a的值只是修改了,新开辟的内存空间的值,和原 ......
1 const int a;
2 int const b; //一样
3 // 
4 const int *c;  //const修饰的是指针所指向的内存空间d的数据,不能被修改
5 int * const d; /*d 常指针(指针变量不能被修改(d不能乱指),但是它所指向内存空间可以被修改)*/
6 const int * const e ;//指针和它所指向的内存空间,均不能被修改

C语言中的const并不是真正意义上的const,C语言中const变量是只读变量,有自己的存储空间,在C语言中,仍然可以通过间接赋值修改a的值。

void main()
{
    //好像 a 是一个常量
    const int a = 10;
    //a = 11;
    int *p = NULL;
    p = (int *)&a;

    *p = 20;  //间接赋值 

    printf("a:%d \n", a);    
    printf("*p:%d \n", *p);
    system("pause");
}

实际上,在C++语言中,const建立的是一个符号表。用指针间接赋值的时候,会重新开辟一块内存空间,间接修改a的值只是修改了,新开辟的内存空间的值,和原来的符号表中的a的值没有任何关系。

所以C++中的const才是真正意义上的const

C++中的const修饰的,是一个真正的常量,而不是C中变量(只读)。在const修饰的常量编译期间,就已经确定下来了。