• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++中的const的使用详解

C++中的const的使用详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++ 函数声明 const,c++ const,c++ const用法,c++中const是什么意思,c++中const的用法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

 C++中的const的使用详解

const在c/c++中还是会经常出现的,并且如果不理解const会在编程出现的错误而不知所措,无法理解。下面从几个角度简要理解const的内容,应该还是蛮有用的。

const与指针类型

const int*p = NULL; 和int const*p = NULL;是等价的。因为const都在“ * ”的前面,其实是以*为标志的。

1. int x = 3; const int *p = &x; 


// p = &y;正确 , //*p = 4;错误 
</div>

指针其实一般是4个字节长度。p的内容是存储0x….,就是其他数据的地址。因此这里的const修饰*p就是说:*p的内容是不可直接被赋值改变的。

而p本身存储的地址是可变的,可以变成其他的0x…..当p指向其他的数据地址时,*p也就随之变成新的数据。

int x = 3; int *const p = &x; //p = &y是错误的
</div>

总结:其实是看这个const是在的前面还是后面,如果在的前面,则表示修饰的是整个“ p ”,而在后面,则表示修饰的是只有p。

显然有:在前面,则表示整个*p是const的,因此p可以指向其他的地址,而*p则是const的,无法改变。同理,int *const p = &x;则表示指针p是固定的,就是说p指针存储的地址是固定的,其内容是const,因此无法修改为其他值(即指向其他地址)。

const与引用

int x = 3; const int &y = x; 
//x = 10;正确 //y = 20; 错误 
</div>

引用前面有const,所以不能通过y来修改x的值。

本人的理解:const int &y就是相当于const int *y1 = &x;然后y = 20就相当于*y1 = 20;这显然时不允许的(就如前面所说的,*p时const,无法直接赋值给*p)。因为引用就相当于给x取了一个别名y,此时y不就是y1指针所指的内容吗?也就是说上面的例子:y = 20;就是相当于 *y1 = 20.

错误的const使用

其他:const int x = 3; int *y = &x; 不能通过编译。因为可能通过*p修改本应该是const的x;
int x = 3; const int *y = &x; 这是可以的,这里的x是可变的,通过由于*y是const的,因此*y就是只能是读取x的值,而不具有写入x的权利。

总结:可以说是只能把一个东西权限缩小,而不能使其原始的权限增大。

const在函数中的应用

主要是防止函数的误操作,对值进行更改

void fun(const int&a, const int&b) 
{ 
//这里就不能对a或b进行更改,否则会编译出错 
}
</div>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++中的const的使用详解
  • 探讨C++中不能声明为虚函数的有哪些函数
  • c++ 类中const成员变量的赋值方法
  • C和C++ const的声明差异
  • C++ const修饰变量和修饰函数介绍
  • 深入分析C++中声明与定义的区别

相关文章

  • 2017-05-28解析取模运算% 和位与运算& 之间的关系详解
  • 2017-05-28求子数组最大和的解决方法详解
  • 2017-05-28浅谈c/c++中使用指针需要注意的问题
  • 2017-09-13C++项目中的extern "C" {}
  • 2017-05-28文件编译时出现multiple definition of 'xxxxxx'的具体解决方法
  • 2017-05-28operator new在C++中的各种写法总结
  • 2017-05-28C语言按关键字搜索文件夹中文件的方法
  • 2017-05-28C++ 先对数组排序,在进行折半查找
  • 2017-05-28C语言中操作进程信号的相关函数使用详解
  • 2017-05-28c++中vector&lt;int&gt;和vector&lt;int*&gt;的用法区别

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++之CWnd窗口框架实例
    • 从string类的实现看C++类的四大函数(面试常见)
    • C++基础入门教程(一):基础知识大杂烩
    • C 语言快速排序实例代码
    • c++连接mysql数据库的两种方法(ADO连接和mysql api连接)
    • 什么是IDE(集成开发环境)?
    • C语言入门之指针用法教程
    • C++求四个正整数最大公约数的方法
    • 详解C++编程中的条件判断语句if-else与switch的用法
    • APUE笔记之:进程环境详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有