const 是C语言里的一个很重要的关键字,其作用是限定一个变量不应该被改变,一定程度上能提高程序的健壮性,为什么说它神奇呢?因为const可被施加在任何作用域内的对象、函数参数、函数返回类型以及成员函数本身,如此多的用法经常闹乱,今天决定好好组织一下留做备用。

先来个简单的,修饰变量的:

char test[] = "test const";
const char *p = test;    //test 是常量
char const *p = test;    //test 是常量
char *const p = test;    //p 指针是常量

规律:const 出现在星号左边,标示所指的事物事常量;const 出现在星号右边,表示指针自身是常量。

    再来,const最具威力的用法是对函数声明时的应用,在一个函数声明中,const可以和函数的返回值、各个参数以及函数自身(需要是类的成员函数)产生关系。

先看一个我们最常见的:

//获得两个点的距离,Vector3是个三维坐标点类

int distance(const Vector3& pos1, const Vector3& pos2);

这类函数是我们经常用到的,为了防止Vector3不必要的构造函数,减少程序开销,我们参数传入了引用(为什么以后再说跟这里没关系不再赘述),为什么是const 类型的?因为我们一般不希望这两个引用类型的变量在函数里被修改,这个跟上面说的指针差不多。

还有一种是:

cosnt Vector3& getPosition();

这个函数一般用在获得某个类型对象的当前位置的,但是为了防止该位置在外部被修改,我们把返回值声明称const类型。

最后一种:

class Test

{

public:

……

cosnt Vector3& getPosition() const;

};

看第二个const,这个const 成员函数的作用就是防止在该函数内部修改任何对象的成员变量值。

先写这么多吧,太累了。

   

转载于:https://www.cnblogs.com/shengweil/archive/2010/04/09/1708522.html

神奇的“const”相关推荐

  1. TypeScript 发布 4.9 beta

    TypeScript 已于 2022.09.23 发布 4.9 beta 版本,你可以在 4.9 Iteration Plan 查看所有被包含的 Issue 与 PR.如果想要抢先体验新特性,执行: ...

  2. webpack的摇树、拆包、热更新、按需加载等难点

    TypeScript 已于 2022.09.23 发布 4.9 beta 版本,你可以在 4.9 Iteration Plan 查看所有被包含的 Issue 与 PR.如果想要抢先体验新特性,执行: ...

  3. 【构造】CF12E Start of the season(神奇的构造)难度⭐⭐⭐

    CF12E Start of the season 题目描述 在伯兰的足球节开幕式中有一个奇怪的魔术秀.最有经验的魔术师会找一个n×nn×nn×n的矩阵(n为偶数).足球节没有这个魔术秀绝对不会开始. ...

  4. vscode设置eslint检验无效_大整理!JavaScript开发者的27个神奇VSCode工具

    全文共5630字,预计学习时长11分钟 图片来源:Ali Zolghadr/Unsplash Visual Studio Code(也被称为VSCode,https://code.visualstud ...

  5. typedef,static,const用法

    一.typedef主要功能是定义一个已存在类型的别名,但是和宏并存 宏与typedef区别 1.宏定义只是简单的字符串替换 2.typedef定义的类型是类型的别名,typedef后面是一个整体声明, ...

  6. #define宏定义中的#,##,@#,\ 这些符号的神奇用法

    C/C++ 宏命令的神奇用法. 先看下面三条语句: #define Conn(x,y) x##y #define ToChar(x) #@x #define ToString(x) #x 1 2 3 ...

  7. 神奇的 Go init 函数

    前言 哈喽,兄弟们,我是asong.今天与大家聊一聊Go语言中的神奇函数init,为什么叫他神奇函数呢?因为该函数可以在所有程序执行开始前被调用,并且每个包下可以有多个init函数.这个函数使用起来比 ...

  8. 【牛客 - 551F】CSL 的神奇序列(推公式,猜结论,母函数)

    题干: 链接:https://ac.nowcoder.com/acm/contest/551/F 来源:牛客网 题目描述 CSL 有一个神奇的无穷实数序列,他的每一项满足如下关系: 对于任意的正整数 ...

  9. 谈一类神奇的数据结构——猫树

    猫树是一个有趣的数据结构,之前一直觉得这玩意儿应该很玄学,但学了之后发现还是挺朴素也挺好打的数据结构 →o→去我洛谷博客看呗? 一.猫树的作用 学一个算法当然得先了解它的用处,那么猫树的作用嘛... ...

  10. 神奇的判断数组名和指针的区别

    神奇的判断数组名和指针的区别 代码 代码 傻傻的区分不清楚数组名和指针的区别,下面的代码可以证明指针和数组名其实不是一个东西: // An highlighted block #include< ...

最新文章

  1. log4j.xml 精选的log4j.xml文档,比较详细,网上的版本很多,这个版本相对而言比较完整...
  2. Python实现一个简单数据库查询接口编写
  3. Filter在Vue,JS,JQ中的使用
  4. 李爽久:平安云如何解决金融同业互联专线痛点
  5. CSS3 -- display:flex
  6. 使用实体框架核心创建简单的审计跟踪
  7. 多进程,守护进程,锁
  8. 《剑指offer》面试题34——丑数
  9. 树莓派自带摄像头OpenCV图像识别-二维码识别
  10. ★★★5230打字慢的解决方法...绝对有用...只需要在手机上轻微的设置一下(转)...
  11. SVN重定向svn switch
  12. 记录一次心脏滴血靶场实验过程
  13. 输入商品显示商品名称和价格
  14. 【C/C++】输入一个整数的二目运算式的字符串,如100+20,332-19,200*2333,44/33二目运算取”加减乘除“中的一种输出运算式的整数结果值
  15. 电脑鼠标箭头一直转圈的解决办法
  16. android --拍照相册选取图片[兼容小米等其他手机]
  17. 江苏省版权申请费用明细以及版权申报流程
  18. Android 从相册中选择照片并返回
  19. Python 3 print() 输出自动换行
  20. [网络安全自学篇] 一 web学习及异或解密

热门文章

  1. MOSS 2010 无法同步用户配置文件
  2. cpu高 rust腐蚀_木器漆如何选购,Rust-Oleum户外防水防腐木器漆怎么样?
  3. android开发常用的组件,Android开发常用控件与属性
  4. php sockets有什么用,PHP中Sockets与流有什么关系啊!!!!!
  5. c# timer 销毁_C# task和timer实现定时操作
  6. tornado Python mysql_python tornado mysql 内容管理后台部署
  7. 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造
  8. keil5图标变成白色_【网上最简单】Chrome安装后打不开任何页面 amp; 改名后图标变成小白块[30秒解决]...
  9. [渝粤教育] 中国地质大学 测量学 复习题
  10. 信贷违约风险评估模型(中篇):特征工程