关键字const在c和c++中的区别和运用

c语言中const是修饰变量使得变量为只读,但这里的只读无非就是不能作为左值被直接赋值 ,然而也是可以通过指针来改变的

但是在c++中const只是定义一个带名字(name)的常量而已,编译器会把(name)和值作为标志符写入一个表中,用的时候再去表中取值使用,当有指针试图修改(name)的时候,编译器会为(name)分配空间,但是表中的(name)和它的值依然没有改变,用的时候还是从表中取值,而不是从分配的内存空间取值

代码如下

/*const.c*/
#include <stdio.h>
int main()
{
    const int name=1;
    int *p;
    p=&name;
    /*name=3,其实这样是非法的,const修饰的变量只读不能作为左值写入*/
    *p=3;     /*合法的操作*/
    printf("name=%d\n",name);
    printf("*p=%d\n",*p);
    return 0;

}

打印结果是name=3
*p=3;

c++代码如下

/*const.cpp*/
#include <stdio.h>
int main()
{
    const int name=1; /*在c++中name就是一个常量而已,把neme和1存入表中*/
    int *p;
    p=&name;         /*开始为name分配空间*/
    *p=3;     /*合法的操作,空间中值为3*/
    printf("name=%d\n",name); /*其实还是从表中取值,为1*/
    printf("*p=%d\n",*p);    /*从分配的空间中取值3*/
    return 0;

}

猜你喜欢

转载自blog.csdn.net/shenlong1356/article/details/80383723