C++ const使用教程,有哪些需要注意的地方?

本文深入探讨了C++中的常量概念,包括如何使用关键字const定义常量,以及常量与变量的区别。同时,详细解析了指针常量和常量指针的区别,提供了易于理解的代码示例,帮助读者掌握这一复杂但重要的知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  常量在C++中经常用到,用关键字const表示,它是常数变量,也就是说,它仍然是变量,而不是常数。什么区别呢?编译器会为变量在内存中分配地址空间,而常数是编译器在编译过程中记录在内存表里一个实体。

  • 常量定义
const int a = 10;

在定义完之后,就不能再修改常量a的值了。如果是在不同的文件中使用,需要用到关键字extern

extern const int a ;

这样表示变量a是一个定义别处的全局变量,在这里只能使用,并不能修改,但a并不一定真的是一个const

指针常量常量指针
  这应该是C++面试和笔试中经常考到的一个知识点。

  • 指针常量
int *const q = 10;  // q is const
*q = 20;    // OK
q++;        // ERROR

指针常量,在上面的代码中,q是常量,指向的地址是不能变化的,但指向地址中的内容是可以改变的。

  • 常量指针
int a = 10;
int b = 20;
const int *p = &a;      // *p is const
*p = 15;                // ERROR 
a = 30;                 // OK
p = &b;                 // OK

常量指针,在上面的例子中,(*p)是常量,我们不能通过(*p)来改变指向的对象即a;但a本身是可以改变的,而且p也是可以指向别处的。

有什么好办法容易区分这两个呢?可以看const*的先后顺序:

const int *p;  //常量指针
int *const p; // 指针常量

而且只要我们记住,const后面的是常量,这样就很容易区分它们的功能,对于常量指针*p都在const后面,所以*p是个常量,直接对*p赋值的操作肯定是错误的;而指针常量,只有pconst后面,所以p是常量,指针指向地址是不能变的,但指向地址里面的内容是可以变的。

函数参数中的常量
如果函数的参数中有常量,那么在函数中,该参数是不能被修改的

int func(const int i){
	i++;  // ERROR
}

函数返回值为常量

int f1() {return 1;}
const int f2() {return 1;}
int main(){
	const int k = f1();     // OK
	int n = f2();              // OK
}

所以,对于const变量,我们可以要记住一个核心的一点是,const后面的变量是不能当左值的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值