C++中const int*, const int * const, 和 int const *区别
简介:
本文主要介绍C/C++中,const int*, const int * const, 和 int const *用法的区别,以及相关的示例代码。
1、const int, const int * const, 和 int const 简介
int*
:指向 int 的指针
int const *
:指向 const int 的指针。
int * const
:指向 int 的 const 指针。
int const * const
:const 指向 const int 的指针。
const可以在类型的任一侧,如下:
const int * == int const *
const int * const == int const * const
2、常量引用
对变量(此处为 int)的引用,该变量是常量。主要是将变量作为引用传递,因为引用的大小比实际值要小,但是有一个副作用,就是实际变量的别名。我们可能会通过对别名的完全访问而意外更改主变量,因此我们将其设为常量以防止这种副作用。
int var0 = 0;
const int &ptr1 = var0;
ptr1 = 8; // 报错
var0 = 6; // 正常
3、常量指针
一旦常量指针指向一个变量,就不能指向任何其他变量。
int var1 = 1;
int var2 = 0;
int *const ptr2 = &var1;
ptr2 = &var2; // 报错
4、指向常量的指针
一个不能改变它所指向的变量值的指针被称为常量指针。
int const * ptr3 = &var2;
*ptr3 = 4; // 报错
5、常量指针
指向常量的常量指针是一个指针,既不能改变它指向的地址,也不能改变保存在该地址的值。
int var3 = 0;
int var4 = 0;
const int * const ptr4 = &var3;
*ptr4 = 1; // 报错ptr4 = &var4; // 报错
了解更多分析及数据抓取可查看:
http://data.yisurvey.com:8989/
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。
C++中const int*, const int * const, 和 int const *区别相关推荐
- c语言const 修饰二级指针,C++中const修饰二级指针(从类型‘int**’到类型‘const int**’的转换无效)...
先上代码: void func(const int ** arg) { } int main(int argc, char **argv) { int **p; func(p); return 0; ...
- const volatile同时限定一个类型int a = 10
const和volatile放在一起的意义在于: (1)本程序段中不能对a作修改,任何修改都是非法的,或者至少是粗心,编译器应该报错,防止这种粗心: (2)另一个程序段则完全有可能修改,因此编译器最好 ...
- const int是什么类型_C++的const语义
背景 我们都知道,const作为修饰符的时候,用来表明这个变量所代表的内存不可修改.因此,const修饰的变量必须在定义的时候就完成初始化,不然以后也没有机会了: const 但是请注意,这个不可修改 ...
- 错误 LNK2019 无法解析的外部符号 “__declspec(dllimport) public: int __thiscall osg::Referenced::ref(void)const “
前言 错误 LNK2019 无法解析的外部符号 "__declspec(dllimport) public: int __thiscall osg::Referenced::ref(void ...
- c语言 define和int,C语言中define与const的用法区别分析
其实这个是困惑了我好久的问题,没想到在上机课做到的题里找到了答案--我的困惑是:#define与const到底有什么区别. 题目: 代码如下 复制代码 #define N 2 #define M N ...
- c语言中{的作用,C语言中Static和Const关键字的作用
C语言中Static和Const关键字的作用 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于(堆)中.那么关于C语言中Static和Const关键字的作用,你了解多少 ...
- const在函数前与函数后的区别 [转]
[转] http://blog.csdn.net/clozxy/article/details/5679887 一 const基础 如果const关键字不涉及到指针,我们很好理 ...
- c++中几种常见的类型转换。int与string的转换,float与string的转换以及string和long类型之间的相互转换。to_string函数的实现和应用。...
1.string转换为int a.采用标准库中atoi函数,对于float和龙类型也都有相应的标准库函数,比如浮点型atof(),long型atol(). 他的主要功能是将一个字符串转化为一个数字,在 ...
- c语言const限制什么,[C语言]类型限定词const解析
标签: 作为C90增加的一个受限类型关键字,const赋予了它修饰的变量一个新属性--不变性,如果一个变量声明中带有关键字const,则无法通过赋值.增减运算来修改该变量的值. 一.指针与const结 ...
- 类与对象:类的6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值操作符重载、默认拷贝构造与赋值运算符重载的问题、const成员函数、 取地址及const取地址操作符重载
1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类.任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数. 构造函数 析构函数 拷贝构造函数 赋值操作符重载 const成员函数 ...
最新文章
- php exchange,PHP SDK for digital currency exchange
- 【正一专栏】梅西、内马尔分开明天会更好
- 允許Linux的snmp服務被查詢
- JEECG 移动端解决方案
- Calendar类和GregorianCalendar类
- 跟我一起数据挖掘(19)——什么是数据挖掘(2)
- 自动化刷EOS资金盘(类Fomo3D)游戏
- 毕业设计论坛,免费毕业设计资源下载
- 微型计算机控制技术赖pdf,微型计算机控制技术.pdf
- dev:dev fatal: HttpRequestException encountered. remote: Invalid username or password. fatal: Authen
- windows-xp桌面图标有蓝底怎么去掉:电脑桌面图标有蓝色阴影的解决办法
- jupyter notebook无法连接python3服务器内核 一直显示正在连接服务器
- cns服务搭建+手机ml,百度直连
- LVGL hal disp(porting display)
- 创建facebook_我如何重新创建Facebook的微交互以进行功能发现
- 程序员如何找对象(1)
- 电脑文档需要服务器登录,云服务器需要用电脑登录
- 12个 Linux 命令的超级用法实例,超实用!
- DDD为什么能火起来?和微服务有啥关系?
- VSCode 安装与配置