标签:
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 }
标签:
原文地址:http://www.cnblogs.com/denggelin/p/5548247.html