话不多说,先上代码:
#include<stdio.h>
#include<stdlib.h>
#define N 10 //CPU产生,10 . 1010
//const是伪常量,限定编译器尽量不直接修改
void main()
{
const int num = 10;//避免直接赋值的修改,不可以避免间接赋值的修改
const int *p1 = #//创建指针指向const int
int *p2 = (int *)p1;
*p2 = 100;
printf("%d", num);
getchar();
}
很明显,结果是100,修改了const int num的值。
const关键字可避免直接赋值的修改,不可以避免间接赋值的修改。
C++中const关键字
1、const修饰普通类型的变量
用法如上
2、const修饰指针
一、const int *p=8;
表示指针指向的内容不可变,不能通过指针p修改这个值,换句话说,就是*p为const,不能被修改。
如:
int a=16;
int b=12;
const int *p=&a;
*p=20;(NO)
p=&b;(OK)
二、int a=8;
const * int p=&a;
表示指针P指向的内存不能改变,其地址上的内容可以改变。
例:
int a=16;
int b=12;
const *int p=&a;
*p=20;(OK)
p=&b;(NO)
三、int a=8;
const * int *p=&a;
P指向的内容和地址都不能改变。
3、尽可能使用const修饰函数形参(条件:只有一层间接关系,且数据为基本类型)
理由:
可以避免无意间的修改数据而导致编程的错误(保护数据),使用const修饰形参,实参可以为const也可以为非const,而形参如果为非const,则实参也只能为非const。