const

Posted 邓戈麟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了const相关的知识,希望对你有一定的参考价值。

 

const变量,可以通过指针修改

const的本质是伪常量,无法用于数组初始化,以及全局变量初始化。

原因:const仅仅限定变量一旦初始化后无法再直接赋值。

const只是限定一个变量无法直接赋值,但是可以间接赋值。

但是还是有可能被意外修改,例如间接赋值,并不是完全只读,所以并非真正意义的常量。

例如局部const变量在栈区,而不在静态区(静态区会一直存在)。

也不在代码区,因为代码区会禁止修改,代码区间接赋值不可能成功。

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 
 6 main()
 7 {
 8     const int num = 10;
 9 
10     printf("%d\n", num);
11 
12     const int *p = &num;//指向常量的指针,定义一个指针指向一个常量,存储num的地址
13 
14     int *pv = (int *)p;//对指向常量的指针进行强制转换
15 
16     *pv = 8;//对指针指向内容进行赋值
17 
18     printf("%d\n", num);//间接的改变了一个常量
19 
20     system("pause");
21 }

 

以上是关于const的主要内容,如果未能解决你的问题,请参考以下文章

为啥在片段中从 char* 转换为 std::string 比转换为 const char* 更可取?

20个简洁的 JS 代码片段

inline内联函数

ECMAScript 2015:for 循环中的 const

JavaScript ES6 的let和const

神经网络:神秘的ReLu