C++练习2 强制类型转换
const可以把有关的数据定义为常量。
const类型可以修饰:对象,指针,引用
使用const_cast为强制类型转换,将常量强制转换非常量。
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int a = 10;
6 const int* p = &a; //定义 int类型的常量指针 p ,并指向 a 的地址,*p不能被修改
7 const int ca = 30; //定义一个常量 ca 并赋值为30
8 int* q;//定义int类型的空指针 q
9 cout << "a的地址为:\t" << &a << "\t a的值为:\t" << a << endl;
10 cout << "*p的指向地址为:" << p << "\t *p的值为:\t" << *p << endl;
11 q = const_cast<int*>(p);//通过 const_cast 将修饰指针 p 的const 类型去掉,从常量指针强转为非常量指针,且仍然指向原来的对象a
12 *q = 20;//将20赋值给指针q
13 cout << "a的地址为:\t" << &a << "\t a的值为:\t" << a << endl;
14 cout << "*p指向的地址为:" << p << "\t *p的值为:\t" << *p << endl;
15 cout << "*q指向的地址为:" << q << "\t q的值为:\t" << *q << endl;
16 cout << "分界线" << endl;
17 p = &ca;//定义指针 p 取 ca 地址
18 q = const_cast<int*>(p);
19 *q = 40;//将40赋值给指针q
20 cout << "ca的地址为:\t" << &ca << "\t ca的值为:\t" << ca << endl;
21 cout << "*p指向的地址为:" << p << "\t p的值为:\t" << *p << endl;
22 cout << "*q指向的地址为:" << q << "\t p的值为:\t" << *q << endl;
23 return 0;
24 }
C++练习2 强制类型转换的更多相关文章
- java中强制类型转换
在Java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...
- C++强制类型转换
C语言强制类型转换过于粗暴,任意类型之间都可以进行转换,编译很难判断其正确性; 难于定位,在源码中无法快速定位所有使用强制类型转换的语句. C++将强制类型转换分为4种不同的类型:static_cas ...
- java提高篇(十一)-----强制类型转换
在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...
- JavaScript学习10 JS数据类型、强制类型转换和对象属性
JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...
- C++强制类型转换操作符 dynamic_cast
dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用. >>>>>>>>>>>编译器的RTTI设 ...
- C++强制类型转换操作符 const_cast
const_cast也是一个强制类型转换操作符.<C++ Primer>中是这样描述它的: 1.将转换掉表达式的const性质. 2.只有使用const_cast才能将const性质性质转 ...
- C++强制类型转换操作符 static_cast
static_cast是一个强制类型转换操作符.强制类型转换,也称为显式转换,C++中强制类型转换操作符有static_cast.dynamic_cast.const_cast.reinterpert ...
- Js里面的强制类型转换
js 和 PHP语言一样是弱类型语言.近期我也在看C语言,并没有传说中那么难,既是书中一再强调的指针部分,也没有那么夸张.至少是理论和语法理解起来不是很难.看起来凡是什么东西,不要总是被别人的话迷惑了 ...
- c语言强制类型转换
一.强制类型转换 printf("3/2+100.5=%f",3/2+100.5);//100.5错误表达 printf (" (float)3/(float)2 ...
- 数据类型/强制类型转换 和运算符---标识符规则/关键字 a++和++a区别
3.2关键字都是小写,TRUE FALSE NULL都不是Java关键字 3.3数据类型 变量相当于一个有名称的容器,该容器用于装各种不同类型的数据 Java类型分为2种 基本类型: 引用类型: 基本 ...
随机推荐
- centos8安装vsftpd
注:ftp只能走相对路径传输文件,需要先cd到文件路径,然后ftp登陆,put上传,get下载 1. 装包与卸载 yum -y install vsftpd yum -y autoremove vsf ...
- 【经验分享】配置用户通过Console口登录设备示例
组网需求 当用户无法进行远程登录设备时,可通过Console口进行本地登录.缺省情况下,使用Console用户界面登录设备时只需要密码认证.为了防止非法用户登录设备,修改Console用户界面的认证方 ...
- vivo大数据日志采集Agent设计实践
作者:vivo 互联网存储技术团队- Qiu Sidi 在企业大数据体系建设过程中,数据采集是其中的首要环节.然而,当前行业内的相关开源数据采集组件,并无法满足企业大规模数据采集的需求与有效的数据采集 ...
- 设计链表-LeetCode707 基础题
LeetCode链接:https://leetcode.cn/problems/design-linked-list/ 题目:设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属 ...
- 使用.NET7和C#11打造最快的序列化程序-以MemoryPack为例
译者注 本文是一篇不可多得的好文,MemoryPack 的作者 neuecc 大佬通过本文解释了他是如何将序列化程序性能提升到极致的:其中从很多方面(可变长度.字符串.集合等)解释了一些性能优化的技巧 ...
- .NET 6 基于IDistributedCache实现Redis与MemoryCache的缓存帮助类
本文通过IDistributedCache的接口方法,实现Redis与MemoryCache统一帮助类.只需要在配置文件中简单的配置一下,就可以实现Redis与MemoryCache的切换. 目录 I ...
- 基于pyecharts的中医药知识图谱可视化
基于pyecharts的中医药知识图谱可视化 关键词: pyecharts:可视化:中医药知识图谱 摘要: 数据可视化是一种直观展示数据结果和变化情况的方法,可视化有助于知识发现与应用.Neo4j数据 ...
- Go语言Golang DevOps运维开发实战
Go语言Golang DevOps运维开发实战 提高运维意识.从下到上,从上到下的工作都要做好,对上运维工作的价值和含金量可以得到认可,对下我们的工作能够提高效率解放运维.运维意识是很重要,并不是你技 ...
- openEuler 部署Kubernetes(K8s)集群
前言 由于工作原因需要使用 openEuler,openEuler官方文档部署K8s集群比较复杂,并且网上相关资料较少,本文是通过实践与测试整理的 openEuler 22.03 部署 Kuberne ...
- [生命科学] snapgene 构建载体方法分享
snapgene 构建载体方法分享 文章目录 snapgene 构建载体方法分享 1. Snapgene 构建载体-酶切位点法 2. 载体构建--同源重组法 3. 总结 1. Snapgene 构建载 ...