const关键字相关

来源:互联网 发布:mesh网络 路由器 编辑:程序博客网 时间:2024/05/22 23:49

const作用:

const在c中的作用和cpp中的略有不同。

在c中经过const修饰的变量并不是绝对的常量,例如

C

const int a = 0;    //定义了一个c语言中的常量int *pa = &a;       //定义了一个普通指针指向常量a,这中间经过了强制类型转换*pa = 2;            //a的值可以通过pa指针修改printf("%d %d\n", a, *pa);

输出: 2 2

上面是在c中写下的代码,程序正常运行并且修改了a的值。同样的代码经过cpp编译会产生不同的结果:

Cpp

const int a  = 0;   //cpp 常量//int *pa = &a;     //这样不能通过编译int *pa = (int *)&a;    //这样可以通过编译*pa = 2;printf("%d %d\n", a, *pa);

输出:0 2

const修饰变量的几种情况:

const int a = 0;    //a 是常量,c和cpp中效果不同const int *pa = &a; //const修饰*pa,*pa不可改变,也就是pa指向的内存空间的内容不能改变int const *pa = &a;     //等价上一个int * const pa = &a;    //const 修饰pa,pa不可改变,但*pa可以改变

cpp中的const:

cpp中利用const可以定义常对象和常方法:

C++中的常对象与常对象成员详解

const和#define比较:

const常量与define宏定义的区别

原创粉丝点击