首页 > 其他分享 >14、P145

14、P145

时间:2023-08-21 15:57:29浏览次数:24  
标签:const 14 指向 int pc P145 未定义 指针

1、”不包含底层const,都可以使用 static_cast“目前不理解这句话(整数第四行)

1、指针的类型是int*,double*,float*等

1、int a = 5;

int* b = &a;

这个时候是可以称呼b为指针。

2、把指针放在void*中,其实是指的是把指针放在void这个类型的变量里,加了*,是为说明这是一个指针。

3、这里所说的原来类型指的是double*这个类型。

4、原始的地址值:指的是指针本身的值,指针所指向的数据的地址;

5、指针所指的类型:我理解的应该是int*,double*,float*这种,而不是指针所指向的数据类型int\double\float

6、const_cast 只能改变运算对象的底层const:我理解的是只能修改类似于const char/int/double *pc中的pc这种指针

7、怎么理解“未定义的行为”?

在这段代码中,pc是一个指向常量字符的指针(const char*),而p是一个将pc强制转换为指向字符的指针(char*)的指针。这里的转换是通过const_cast进行的,它允许将常量类型转换为非常量类型。

现在让我们来理解未定义的行为。在C++中,"未定义的行为"是指编程时的一种情况,它违反了C++标准,也就是说,编译器对此没有定义应该采取的具体行为。因此,编译器可以在此类情况下采取任何操作,可能会导致程序出现奇怪的行为、崩溃或其他问题

在这个特定的例子中,p指针被用来指向pc指针,将常量性强制转换为非常量性。但是,pc指针指向的数据是常量,也就是说,它指向的内容不应该被修改。

当你使用p指针去写入数据时,例如:

*p = 'a';

 

这时候,由于p指针实际上指向的是常量数据,而你试图通过它来修改这些数据,这就会导致未定义的行为。

未定义的行为可能导致程序在不同的编译器、平台或输入条件下表现出不同的行为。有时候代码可能会正常运行,而在另一些情况下,它可能会崩溃或产生不可预测的结果。因此,避免未定义的行为是良好的编程实践,以确保程序的稳定性和可靠性。

如果你想要避免未定义的行为,应该避免将指向常量的指针转换为指向非常量的指针,除非你能确保在这种情况下不会尝试修改指向的数据。

8、为什么下面这个是正确?目前还没有总结出一个统一的规律

const char* cp = "Hello";
std::string str = static_cast<std::string>(cp);

 

目前可以先简单的理解为:

这是因为std::string有一个接受const char*的构造函数,所以可以使用static_cast进行转换:

后面还有研究

9、

 

标签:const,14,指向,int,pc,P145,未定义,指针
From: https://www.cnblogs.com/xzit201802/p/17646226.html

相关文章

  • 上周热点回顾(8.14-8.20)
    热点随笔:· 弹尽粮绝,会员救园:会员上线,命悬一线 (博客园团队)· 开源项目自荐:截图工具(小、快、功能丰富) (liulun)· 一种基于ChatGPT的高效吃瓜方式的探索和研究。 (why技术)· 【故障公告】多年的故障老朋友又来了:数据库服务器CPU100% (博客园团队)· .NETCore多线(......
  • 如何使用U盘安装Ubuntu 14.04
    对于做运维的同学来说U盘装个系统不就是分分钟的事吗,这有什么好说的?U盘安装系统一般就是如下几步:下载系统镜像。通过刻录软件写入U盘。修改BIOS,从U盘引导。喝杯咖啡,愉快的等待安装完成。通常按操上面的步骤如法炮制都是屡试不爽的,可偏偏通过U盘安装Ubuntu却是问题重重,下面我们就来......
  • 8.14-8.19每周报告
    这周一直再弄那个物联网的比赛,我们得了个二等奖,去北京工业大学张了张见识,好的大学里面的条件跟我们真的不一样,他们所接触的东西,比我们更深更广,我们还得好好努力努力,争取下次参赛的时候拿一个一等奖,这周的学习几乎算是没有吧,不过好在解决了hbase的问题,原因是因为hadoop的安全模式打......
  • 树链剖分 | 洛谷 P4114 Qtree1
    前言题目链接:洛谷P4114Qtree1前置知识:树链剖分题意给定一棵树,有修改边权和查询两点之间边权最大值两种操作,对于每个查询输出结果。解析已经在前置博客里提到,树链剖分可以将树上的任意一条路径划分成不超过\(O(\logn)\)条连续的链,保证划分出的每条链上的节点DFS序......
  • Airtest1.2.7新增的14个断言API解析
    以下基于python3.8;airtestIDE1.2.14;airtest1.2.7;pocoui1.0.87Airtest1.2.7新增了14个断言API,使得断言更多丰富,之前就有的4个断言:assert_exists、assert_not_exists、assert_equal、assert_not_equal,详细可以看:AirtestAPI精讲之断言,这里就不再过多介绍。之前想断言一个变量是......
  • 西农OJ P1491 城市电话号码
    题目描述某城市电话号码包括地区码、前缀、有效号码三部分组成,其中地区码是0-4位数字;前缀是以非0开头的3位数字,有效号码是4位数字,各部分之间用减号(-)分隔,地区码为空时地区码与前缀之间不包含分隔符。请编写函数检测输入号码num的有效性,若输入号码符合上述规定返回0,否则返回1。函......
  • 如何使用U盘安装Ubuntu 14.04
    对于做运维的同学来说U盘装个系统不就是分分钟的事吗,这有什么好说的?可偏偏通过U盘安装Ubuntu却是问题重重,下面我们就来说说几个U盘安装UbuntuServer时遇到的问题。对于做运维的同学来说U盘装个系统不就是分分钟的事吗,这有什么好说的?U盘安装系统一般就是如下几步:下载系统......
  • 114514
    个人认为我的思路是比较自然的。首先,显然\(\gcd(a_i,a_j,a_k,a_l)=1\)是不好做的,考虑将其转换成总方案数减去\(\gcd(a_i,a_j,a_k,a_l)\neq1\)的方案数。记后半部分为\(num\),则原问题等价于求\(\binomn4-num\)。考虑怎么求\(num\),显然有\(\gcd(a_i,a_j,a_k,a_l)......
  • P4 UVA11400 Lighting System Design
    很好的一道DP题。首先按照电压排序。然后考虑\(dp[i]\)表示前\(i\)盏灯的最小花费,则应该有\(dp[i]=min(dp[j]+(s[i]-s[j])*c[i]+k[i])\),其中\(s[i]\)表示前\(i\)盏灯的总需求数。为什么可以这样子直接用前缀,而不用考虑"跳着选"呢?是因为如果跳着选,就说明有一盏灯在......
  • 2023年8月14日
        今天早上起来背了10个英语单词,然后学习了一个小时的java,写了一会英语阅读,然后和朋友出去打了两个小时的羽毛球,最后写了一会作业。    明天打算看一小时的电视剧,然后和朋友出去玩一会,打一两个小时的篮球,最后晚上练一小时的字,然后学习一小时的java。......