【C++基础知识】const修饰符

const修饰符

在C语言中,我们习惯用#define来定义常量,例如

#define MAX 100

实际上,这种方法只是在预处理时进行字符的置换,将所有的"MAX"替换成"100",过后程序中不再有MAX这个标识符。

这个MAX不是变量,没有类型,不占内存,容易出错。

C++提供了一种更为灵活安全的方式来定义常量,即使用const来修饰常量,例如:

const int MAX=100;

此处的MAX是有类型的,占用存储单元,有地址,可以用指针指向它,但是不能改变其值。

看下面这段代码:

#include<iostream>                      
using namespace std; 
int main()
{
	int a = 1;
    #define T1 a+a;
    #define T2 T1-T1;
	cout << "T2 is " << T2 ;
	return 0;
}

初看程序结果似乎应该打印

T2 is 0

但是这个程序实际的结果是

T2 is 2

其原因是把第八行语句解释成为

cout<<"T2 is "<<a+a-a+a<<endl;

如果程序中使用const取代了#define,将不会出现这种错误。如下:

#include<iostream>                      
using namespace std; 
int main()
{
	int a = 1;
    int const T1=a+a;
    int const T2=T1-T1;
	cout << "T2 is " << T2 ;
	return 0;
}

执行结果:
在这里插入图片描述

因此C++建议用const取代#define定义常量

const修饰指针

1、指向常量的指针,例如;

const char * name ="hyx";                //声明指向常量的指针

该指针允许改变其所指的地址,但是不能改变所指的常量。

name[3]='a';                           //错误,不允许改变指针所指的常量
name="xxxxxxx";                        //合法,可以改变指针所指的地址

2、常指针是指把指针所指的地址定义为常量

顾名思义,该指针的地址为常量,不可更改,但其指向的数据可以更改。

3、指向常量的常指针

无论是地址还是该地址内的数据都不可更改。

说明

1、如果使用const定义一个整型常量,关键字int可以省略。例如下面两行定义是等价的:

  const int MAX=100;
  const MAX=100;

2、常量一旦被建立,在程序的任何地方都不能改变。

3、与#define定义的常量不同,const定义的常量可以有自己的数据类型,这样C++在编译时进行更加严格的类型检查,具有良好的编译时的检测性。

4、函数的形参也可以用const说明,用于保证形参在该函数内部不被改变。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值