int i ; const int val=i ; 在C++中这种赋值对吗?
首先这种定义方式是可以通过编译的。 int i; //定义(注意是定义,意味着分配了内存)一个int型变量i,同时没有初始化。那么i的值就是分配内存位置的值,这个值可能为任意值。 const int val = i; // 定义一个const int对象val,并初始化,那么初始化后val的值就是刚才i内存位置的值。定义后,val即便仍然是左值(意味着可赋值),但任何修改val的尝试都会导致编译错误。所以val的值是不可修改了。 所以说,上述方式没错,但i没有初始值,导致定义val是没有意义的。 你可以试试int i = 10; const int val = i; cout << i << endl; cout << val << endl; i = 5; //修改 cout << i << endl; cout << val << endl; 就明白啦。
const变量默认是在定义该变量文件的局部变量。而如果定义在头文件中,则必须使用常量表达式进行初始化,因为编译器需要在编译时就计算出后面初始化表达式的值。像这里,如果在main函数体内这么定义,是可以的,因为是局部变量。 const的语义就是要这个变量不能修改,在定义了一个如const int i = 10; 然后再赋值如 i =11;就是不合法的了。
int i ; const int val=i ; 在C++中这种赋值对吗?相关推荐
- const int *,const int * const和int const *有什么区别?
我总是搞砸了如何正确使用<code>const int* , const int * const和int const * . 是否有一组规则定义您可以做什么和不能做什么? 我想知道在分配, ...
- const int、const int *、int *cosnt、const int * const、const int 的区别
2018-01-04 创建人:Ruo_Xiao 2018-10-17 修改人:Ruo_Xiao 邮箱:xclsoftware@163.com 修改内容:增加对 delete 指向常量的指针的可行性的说 ...
- const int和const int本质区别
很简单的来说,const int&是引用传值的方式,const int是值拷贝的方式 引用传值,简单的来说,就是把内存地址传过来,本身没有重新分配一块内存,而值拷贝的方式,则是重新从内存中分配 ...
- const int *,const int * const和int const *之间的区别
文章目录 int const* int *const const int* const 记忆图 参考文档 int const* int const* 是指向常量整数的指针. 这意味着被 ...
- C++函数传参int a,int *a,int a,const int a的区别
C++函数传参int a,int &a,const int &a的区别 # 传参方式 作用 int a 值传递 无法改变a的值 int *a 地址传递 ...
- c语言中 int和const int的区别
一.const int 和int 的区别 具体的是 int定义的是一个变量,不需要初始化const int定义的是常量,需要初始化 1.返回值 const int & 是返回这个数值的一个常量 ...
- 2020-09-21C++学习笔记之与C语言区别和加强——四种const意义(const int a; int const b; const int *c; int * const d)
2020-09-21C++学习笔记(const int a; int const b; const int *c; int * const d) 这两天在上课更新晚了. 1.C/C++中的const ...
- 对于这个函数const int func(const int a) const声明中,三个const分别是什么意思?...
第一个const 函数的返回值类型是const. 这个const修饰没什么意义,你可以想象一下: 既然是函数的 返回值,而且是值传递的形式,是否const有什么意义.如果指针(引用)传递,怎表示返回值 ...
- const int *p说明不能修改_C语言关键字const和指针结合的使用
C语言中,const 的作用是把变量变为一个只读的变量.与指针结合起来,有以下几种用法,下面分别进行说明. const int p; const int *p; int * const p; cons ...
最新文章
- mysqljs在koa2中的正确姿势
- Android之从网络上获取图片的两种方式讲解:thread+handle和AsyncTask方式
- BZOJ 1997: [Hnoi2010]Planar( 2sat )
- Colima:MacOS 上的极简容器运行时和 Kubernetes
- Errors while executing git --version. exitCode=128 errors: fatal: open /dev/null or dup failed: No s
- mysql 自定义序列号_在mysql中怎样设置,才能自动添加序列号
- 在idea配置jetty和创建(包、文件)javaWeb以及Servlet简单实现
- PAIP.ASP.NET FTP SKIPLIST
- BXP因为时间错误而丢失license的修复方法(转)
- ansys命令流——布尔运算
- [工业互联-7]:工业控制电气自动化系统与主要元器件
- 【Java架构师入门到精通】java分布式架构有哪些技术
- R语言 线性混合效应模型实战案例
- 如何使用 Filebeat,ILM 和数据流跨多个索引管理 Elasticsearch 数据
- 前端程序调试方法总结--高级版
- vb.net html图片,手把手教你VB.NET DataGrid图片显示
- 简单园区网络基本架构
- Unix环境高级编程 笔记
- Deinterlacer(影像解交错)概念与解析
- 【print的格式化输出】
热门文章
- 容联云 实现验证码发送
- 安卓内存监控工具,2021年Android面试心得,系列教学
- 在xp系统电脑上建立宽带连接服务器吗,windows xp系统如何在电脑桌面上创建ADSL连接...
- 杨超越的经历故事性太强了,现实版的娱乐圈爽文
- Google推广的优势
- 牛叔说电影-社会底层是怎样炼成的
- 复变函数 —— 0. 连接复数与三角函数的欧拉公式
- ACM-ICPC 成为方正快手等企业 HR 的战场
- Windows PC上创建大数据职业技能竞赛实验环境之一--基本环境的搭建
- CSP-J 2021_3_网络连接