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的地址 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* 更可取?