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

C++的const简单说明

2018-04-02 21:30 369 查看
const的基础知识:int main() {
    const int a;                //代表一个常整形数;
    int const b;         //代表一个常整形数;
    const int *c; //是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改;
    int * const d; //常指针(指针变量不能被修改,但是它所指向内存空间可以被修改);
    const int * const e ;       //一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改);
    return 0;
}
初级理解:const是定义常量==》const意味着只读。

const好处,合理的利用const:
1.指针做函数参数,可以有效的提高代码可读性,减少bug;
2.清楚的分清参数的输入和输出特性;
int setTeacher_err(const Teacher *p)

const修饰形参的时候,在利用形参不能修改指针所向的内存空间。
C语言中的const是冒牌货:#include <stdio.h>
#include <stdlib.h>
int main()
{
const int a = 10;
int *p = (int*)&a;
printf("a===>%d\n", a);
*p = 11;
printf("a===>%d\n", a);
return 0;
}程序运行结果:



有程序运行结果可知,可以通过指针间接改变const修饰的变量。
现在我们将同样的代码使用C++编译器看看效果:#include <iostream>
#include <stdio.h>
int main()
{
const int a = 10;

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

*p = 11;
printf("a===>%d\n", a);
    return 0;
}输出结果:



C++中const修饰的变量是一个真正的常量。
结果分析:C++编译器对const常量的处理,当碰见常量声明时,在符号表中放入常量,使用键值对的方式保存,一个key对应一个value;编译过程中若发现使用常量则直接以符号表中的值替换。编译过程中若发现对const使用了extern或者&操作符,则给对应的常量分配存储空间(兼容C)。
注意:

C++编译器虽然可能为const常量分配空间,但不会使用其存储空间中的值。
C++中的const常量:
        可能分配存储空间,也可能不分配存储空间 。
        当const常量为全局,并且需要在其它文件中使用,分配地址空间。
        当使用&操作符取const常量的地址,分配地址空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: