C语言中关键字const

话不多说,先上代码:

#include<stdio.h>
#include<stdlib.h>
#define N 10   //CPU产生,10 . 1010

//const是伪常量,限定编译器尽量不直接修改

void main()
{
const int num = 10;//避免直接赋值的修改,不可以避免间接赋值的修改
const int *p1 = &num;//创建指针指向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。


阅读更多
个人分类: 技术
上一篇C++内存四区模型
下一篇求一个整数的二进制数及一个整数的补码
想对作者说点什么? 我来说一句

关键字const用法

2010年06月20日 35KB 下载

没有更多推荐了,返回首页

关闭
关闭