博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
const 详解
阅读量:3927 次
发布时间:2019-05-23

本文共 1279 字,大约阅读时间需要 4 分钟。

点击上方蓝字关注我,我们一起学编程

欢迎小伙伴们分享、转载、私信、赞赏

微信搜索:编程笔记本

微信搜索:编程笔记本
微信搜索:编程笔记本

今天带领大家回顾一下 const 的几种用法。

首先介绍两个概念:

  • 顶层(top-level)const:指针本身不可改变,但指针指向的值可以改变。
  • 顶层(low-level)const:指针指向的值不可改变,但指针本身可以改变。

现在我们把几种可能的 const 组合写在下面:

微信搜索:编程笔记本

微信搜索:编程笔记本
微信搜索:编程笔记本

int a;const int * p1 = &a;int * const p2 = &a;int const * p3 = &a;const int * const p4 = &a;

现在我们依次来分析每一种情况。

#include 
using namespace std;int main(){
int a = 1; int b = 2; const int * p1 = &a; // 指向的值不可变,底层 int * const p2 = &a; // 指针本身不可变,顶层 int const * p3 = &a; // 指向的值不可变,底层 const int * const p4 = &a; // 均不可变,顶层、底层 /* const int * p1 = &a; */ p1 = &b; // 正确 *p1 = 3; // 错误:assignment of read-only location ‘* p1’ /* int * const p2 = &a; */ p2 = &b; // 错误:assignment of read-only variable ‘p2’ *p2 = 3; // 正确 /* int const * p3 = &a; */ p3 = &b; // 正确 *p3 = 3; // 错误:assignment of read-only location ‘* p3’ /* const int * const p4 = &a; */ p4 = &b; // 错误:assignment of read-only variable ‘p4’ *p4 = 3; // 错误:assignment of read-only location ‘*(const int*)p4’ return 0;}

以上程序段展示出了每一种情况下的 const 是顶层的还是底层的,并给出相应的错误提示。

一个很现实的问题是:**该如何去记忆?**下面我教大家一个简单可行的方法:

* 为界,若 const 出现在左侧,则其指向的值不可变;若 const 出现在右侧,则指针本身不可变;若 const 出现在两边,则指针及其指向的值均不可变。

微信搜索:编程笔记本

微信搜索:编程笔记本
微信搜索:编程笔记本

你可能感兴趣的文章
AgileConfig-如何使用AgileConfig.Client读取配置
查看>>
【gRPC】 在.Net core中使用gRPC
查看>>
整合.NET WebAPI和 Vuejs——在.NET单体应用中使用 Vuejs 和 ElementUI
查看>>
“既然计划没有变化快,那制订计划还有个卵用啊!”
查看>>
C#实现网页加载后将页面截取成长图片
查看>>
C# 在自定义的控制台输出重定向类中整合调用方信息
查看>>
【gRPC】ProtoBuf 语言快速学习指南
查看>>
C# 9 新特性 —— 补充篇
查看>>
Asp.Net Core使用Skywalking实现分布式链路追踪
查看>>
浅谈CLR基础知识
查看>>
Xamarin使XRPC实现接口/委托远程调用
查看>>
如何成功搞垮一个团队?
查看>>
.NET开源5年了,这些宝藏你还没get?
查看>>
【日常排雷】 .Net core 生产环境appsetting读取失败
查看>>
从内存中释放Selenium chromedriver.exe
查看>>
如何在 C# 中使用 MSMQ
查看>>
小试elsa
查看>>
巧用 Lazy 解决.NET Core中的循环依赖关系
查看>>
微前端架构在容器平台的应用
查看>>
C# 中的 null 包容运算符 “!” —— 概念、由来、用法和注意事项
查看>>