• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此

C++知识点:const用法

C++知识点 云涯 4年前 (2020-12-02) 1650次浏览

1. 基本简介

const 是 constant 的缩写,本意是不变的,不易改变的意思。在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。

 

2. 修饰变量

2.1 修饰普通类型的变量

<span style="font-size: 16px;"><span class="kwd">const</span> <span class="kwd">int</span><span class="pln">  a </span><span class="pun">=</span> <span class="lit">7</span><span class="pun">;</span> 
<span class="kwd">int</span><span class="pln">  b </span><span class="pun">=</span><span class="pln"> a</span><span class="pun">;</span> <span class="com">// 正确</span><span class="pln">
a </span><span class="pun">=</span> <span class="lit">8</span><span class="pun">;</span>       <span class="com">// 错误,不能改变</span></span>

对于 const 变量 a,我们取变量的地址并转换赋值给 指向 int 的指针,然后利用 *p = 8; 重新对变量 a 地址内的值赋值,然后输出查看 a 的值。

从下面的调试窗口看到 a 的值被改变为 8,但是输出的结果仍然是 7。

如果不想让编译器察觉到上面到对 const 的操作,我们可以在 const 前面加上 volatile 关键字。

Volatile 关键字跟 const 对应相反,是易变的,容易改变的意思。所以不会被编译器优化,编译器也就不会改变对 a 变量的操作。

2.2 修饰指针变量

修饰指针变量有以下三种情况:

  • A: const 修饰指针指向的内容,则内容为不可变量。
<span style="font-size: 16px;"><span class="kwd">const</span> <span class="kwd">int</span> <span class="pun">*</span><span class="pln">p </span><span class="pun">=</span> <span class="lit">8</span><span class="pun">;</span></span>

则指针指向的内容 8 不可改变。简称左定值,因为 const 位于 * 号的左边

 

  • B: const 修饰指针,则指针为不可变量。
<span style="font-size: 16px;"><span class="kwd">int</span><span class="pln"> a </span><span class="pun">=</span> <span class="lit">8</span><span class="pun">;</span>
<span class="kwd">int</span><span class="pun">*</span> <span class="kwd">const</span><span class="pln"> p </span><span class="pun">=</span> <span class="pun">&</span><span class="pln">a</span><span class="pun">;</span>
<span class="pun">*</span><span class="pln">p </span><span class="pun">=</span> <span class="lit">9</span><span class="pun">;</span> <span class="com">// 正确</span>
<span class="kwd">int</span><span class="pln">  b </span><span class="pun">=</span> <span class="lit">7</span><span class="pun">;</span><span class="pln">
p </span><span class="pun">=</span> <span class="pun">&</span><span class="pln">b</span><span class="pun">;</span> <span class="com">// 错误</span></span>

对于 const 指针 p 其指向的内存地址不能够被改变,但其内容可以改变。简称,右定向。因为 const 位于 * 号的右边

 

  • C: const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量
<span style="font-size: 16px;"><span class="kwd">int</span><span class="pln"> a </span><span class="pun">=</span> <span class="lit">8</span><span class="pun">;</span>
<span class="kwd">const</span> <span class="kwd">int</span> <span class="pun">*</span> <span class="kwd">const</span><span class="pln">  p </span><span class="pun">=</span> <span class="pun">&</span><span class="pln">a</span><span class="pun">;</span></span>

const p 的指向的内容和指向的内存地址都已固定,不可改变

2.3 修饰类成员函数

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


云涯历险记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C++知识点:const用法
喜欢 (0)