当前位置: 首页 > news >正文

关于const指针的一个常见误区

关于const,我曾因为其在CC++中的不同,还有一些编译器对未定义的处理不同,搞得晕头转向…

后来有次在阅读《C primer plus》中我终于梳理了有关const的结论。

1.const基础知识

首先要明白const的难点在于修饰指针的时候,对于const int* const ptr;来说:

  1. 前一个const修饰*ptr,不能将*ptr的值改变

  2. 后一个const修饰ptr,不能将ptr的值改变

2.const基本规则

C中:

  1. const数据或者非const数据的地址,“初始化”或者“赋值给”指向const的指针是合法的

  2. 只能把非const数据的地址,“赋值给”非const的指针

  3. 规定使用非const标识符修改const数据导致的结果是未定义的,编译器遇到这样的代码时可能给出警告(因为这样子就可以通过新的指针改变const指针指向的数据)

  //演示规则1void test_1(){double arr1[3] = { 1.2,3.2,3.14 };//非constconst double arr2[4] = { 0.12,1.2,3.2,3.14 };//constconst double* pnc = arr1;//有效,初始化pnc = &arr1[1];//有效,赋值pnc = arr2;//有效,赋值int i = 10;int* p = &i;const int** pp = &p;*pp}//演示规则2void test_2(){double arr1[3] = { 1.2,3.2,3.14 };const double arr2[4] = { 0.12,1.2,3.2,3.14 };double* pnc = arr1;//有效,初始化pnc = &arr1[1];//有效,赋值pnc = arr2;//无效,并且VS2022给出警告}//演示未定义行为#include <stdio.h>int main(){const int i = 10;//不可修改iconst int* pi = &i;//不可修改(*pi)int* temp = pi;*temp = 20;printf("%d\n", i);return 0;}//在vs2022的17.7.0版本中,这样做是可以的,输出20//在CentOS7下的gcc的4.8.5版本中,直接不给编译进行报错

吐槽:是谁造谣可以用非const指针绕过去修改const数据的!?啊?VS2022可以做到?那我们换个平台试试。
在这里插入图片描述

你动下试试?类型检查这一方面直接就过不了关…

相关文章:

关于const指针的一个常见误区

关于const&#xff0c;我曾因为其在C和C中的不同&#xff0c;还有一些编译器对未定义的处理不同&#xff0c;搞得晕头转向… 后来有次在阅读《C primer plus》中我终于梳理了有关const的结论。 1.const基础知识 首先要明白const的难点在于修饰指针的时候&#xff0c;对于con…...

@alilclowcode-engine-ext@1.0.5 不支持安装react@^16.3.0

alilclowcode-engine-ext1.0.5 不支持安装react^16.3.0 https://github.com/alibaba/lowcode-demo https://lowcode-engine.cn/site/docs/demoUsage/intro https://github.com/alibaba/lowcode-engine https://docs.appsmith.com/getting-started/setup/installation-guides?…...

Python之列表操作和内存模型

Python之列表操作和内存模型 列表list 一个排列整齐的队伍&#xff0c;Python采用顺序表实现 列表内的个体称作元素&#xff0c;由若干元素组成 列表 元素可以是任意对象(数字、字符串、对象、列表等) 列表内元素有顺序&#xff0c;可以使用索引 线性的数据结构 使用 [ ] …...

实习面试记录

湖南某操作系统中厂&#xff08;9月&#xff09; 首先是科研项目相关的问题&#xff0c;然后是其他问题如下&#xff1a; STL中&#xff0c;vector,map和unorded_map底层是怎么实现的&#xff1f; 在C标准库中&#xff0c;vector和map都是基于模板类实现的容器。 vector底层…...

总结/笔记-vue中的插槽(默认插槽、具名插槽、作用域插槽)

问题&#xff1a; 遇到了一个插槽&#xff0c;写法为 #default ”{ row }“ 插槽知识点&#xff1a; 定义 插槽&#xff0c;用于 在组件中 引用外部组件或自定义组件的内容。 即 子组件中提供给父组件使用的一个占位符&#xff0c;父组件可以在这个占位符中填充任何模板代…...

QTday5(QT连接TCP通信)

一、Xmind整理&#xff1a; C语言中的通信协议&#xff1a; 二、上课笔记整理&#xff1a; 1.QT中的服务器端的操作&#xff1a; .pro文件&#xff1a; 头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务…...

【Docker】安装RabbitMQ

1、拉取 RabbitMQ 镜像 docker pull rabbitmq2.创建并运行容器 docker run -it --name test-rabbitmq -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PASSuispig -p 15672:15672 -p 5672:5672 -d rabbitmq参数说明–name是 容器别名-d表示后台运行-p将 宿主机 5672端口…...

【如何获取数据库表的字段并拼接】

获取数据库表的字段并拼接 需求场景操作步骤获取该数据库对应表中所有的字段对获取到的字段进行处理 需求场景 在写sql语句时&#xff0c;我要获取到该表的大部门字段来做处理&#xff0c;一个个粘贴复制太费事了&#xff0c;所以我决定执行sql语句把表中字段查询出来 操作步…...

Oracle中LEFT JOIN后AND与WHERE的异同

1、AND 过滤之后再连接 2、WHERE 连接之后再过滤 下面以具体例子来说明&#xff1a; (1)、建表及插入测试数据 --建测试表 create table FACT_TAB ( ID INTEGER,STATUS VARCHAR2(8) ); create table DIM_STATUS ( STSTUS_CLASS VARCHAR2(8),STATUS_CODE VARCHAR2(8),S…...

Flink实时计算中台Kubernates功能改造点

背景 平台为数据开发人员提供基本的实时作业的管理功能,其中包括jar、sql等作业的在线开发;因此中台需要提供一个统一的SDK支持平台能够实现flink jar作业的发布;绝大多数情况下企业可能会考虑Flink On Yarn的这个发布模式,但是伴随云原生的呼声越来越大,一些企业不希望部…...

GO远程构建并调试

GO远程调试 之前写C&#xff0c;一直习惯了本地IDERemote CMake/GDB编译调试的模式。 因为6.824课程需要用GO&#xff0c;好像没有特别好的支持。记录一下如何配置调试的。 IDE: Goland 操作系统&#xff1a;Windows 远程服务器&#xff1a;Ubuntu 首先配置SSH,让其可以连接到…...

react使用hook封装一个search+input+checkbox组件

目录 react使用hook封装一个searchinputcheckbox组件searchPro.jsx使用组件效果 react使用hook封装一个searchinputcheckbox组件 searchPro.jsx import { Checkbox, Input } from "antd"; import React, { useEffect, useState } from "react"; import S…...

【6】uniform颜色写入

之前的Basic.shader: #shader vertex #version 330 corelayout(location 0) in vec4 position;void main() {gl_Position position; };#shader fragment #version 330 corelayout(location 0) out vec4 color;void main() {color vec4(1.0, 0.0, 0.0, 1.0); };这里color …...

自然语言处理历史史诗:NLP的范式演变与Python全实现

目录 一、引言什么是自然语言处理&#xff1f;语言与人类思维自然语言的复杂性NLP的历史轨迹 二、20世纪50年代末到60年代的初创期符号学派重要的研究和突破 随机学派重要的研究和突破 三、20世纪70年代到80年代的理性主义时代基于逻辑的范式重要的研究和突破 基于规则的范式重…...

网络协议从入门到底层原理学习(二)—— Mac地址/IP地址

文章目录 网络协议从入门到底层原理学习&#xff08;二&#xff09;—— Mac地址/IP地址1、MAC地址2、MAC地址的表示格式3、MAC地址表4、MAC地址操作5、MAC地址的获取6、ARP7、ICMP8、IP地址9、IP地址的分类和格式10、不同分类的IP地址的范围11、特殊 IP 地址12、子网掩码13、子…...

2023开学礼中国海洋大学《乡村振兴战略下传统村落文化旅游设计》许少辉新海洋图书馆

2023开学礼中国海洋大学《乡村振兴战略下传统村落文化旅游设计》许少辉新海洋图书馆...

WebClient vs HttpClient:异同对比

在 Java 开发中&#xff0c;进行网络通信是常见的需求。WebClient 和 HttpClient 是两种常用的用于发送 HTTP 请求的工具。它们都具有相似的功能&#xff0c;但在实现细节和用法上存在一些差异。本文将详细介绍 WebClient 和 HttpClient 的异同&#xff0c;帮助您选择适合您项目…...

ES6中导入import导出export

ES6使用 export 和 import 来导出、导入模块 用法 /** 导出 export *///分别导出 export let name 孙悟空; export function sum(a, b) {return a b; } } //先定义再导出 let age 18 export {age}/** 默认导出 export default */const a 默认导出; export default a;/**…...

【MySQlL学习笔记】(九)内外连接

内外连接 内连接外连接左外连接右外连接 表的连接分为内连和外连 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;我们前面学习的查询都是内连接&#xff0c;也是在开发过程中使用的最多的连接查询。 语法&#xff1a; select 字段 from 表…...

敦煌https证书能做些什么

随着互联网技术的不断发展&#xff0c;人们的生活方式和社交方式也发生了巨大的变化。互联网已经成为人们生活中不可或缺的一部分&#xff0c;它不仅提供了方便快捷的信息获取方式&#xff0c;还为人们提供了一个全新的社交平台。 然而&#xff0c;随着互联网的不断发展&#x…...

3个关键步骤让老款Mac重获新生:OpenCore Legacy Patcher终极指南

3个关键步骤让老款Mac重获新生&#xff1a;OpenCore Legacy Patcher终极指南 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当苹果宣布你的Mac不再支持最新的macOS系统时…...

PowerPaint-V1实战体验:用画笔涂抹想修改的区域,选择模式即可智能修复

PowerPaint-V1实战体验&#xff1a;用画笔涂抹想修改的区域&#xff0c;选择模式即可智能修复 1. 开箱即用的图像修复神器 最近在测试各种AI图像处理工具时&#xff0c;发现PowerPaint-V1这款基于Gradio的智能图像修复工具特别实用。它最大的特点就是操作简单直观&#xff1a…...

Harmonyos应用实例226:复数的三角形式与运算

8. 复数的三角形式与运算 功能简介:将复数表示为三角形式,计算模和幅角,支持复数的乘法、除法运算的几何意义。通过复平面可视化展示复数的三角形式和运算过程,帮助学生理解复数的三角表示和运算规则。 ArkTS代码: @Entry @Component struct ComplexTrigonometric {@St…...

SenseVoice语音识别在客服场景的应用:自动转写通话录音实战

SenseVoice语音识别在客服场景的应用&#xff1a;自动转写通话录音实战 1. 引言&#xff1a;客服录音转写的痛点与机遇 想象一下这样的场景&#xff1a;每天有成千上万的客服通话录音堆积在服务器上&#xff0c;里面包含了客户反馈、产品问题和市场洞察的宝贵信息。但现实是&…...

别再踩坑了!Windows 10下Mamba-SSM 2.2.2 + CUDA 12.4保姆级安装指南(附已修复依赖包)

Windows 10下Mamba-SSM 2.2.2与CUDA 12.4终极配置指南 在深度学习领域&#xff0c;Mamba-SSM因其高效的状态空间模型架构而备受关注。然而&#xff0c;对于Windows用户而言&#xff0c;配置一个可用的Mamba-SSM环境往往是一场噩梦。本文将带你一步步避开所有陷阱&#xff0c;完…...

文墨共鸣大模型安装包依赖分析与环境冲突解决

文墨共鸣大模型安装包依赖分析与环境冲突解决 你是不是也遇到过这种情况&#xff1a;拿到一个项目&#xff0c;兴冲冲地运行 pip install -r requirements.txt&#xff0c;结果屏幕上开始疯狂报错&#xff0c;各种版本不兼容、找不到模块、编译失败的信息轮番轰炸。折腾了几个…...

springboot-vue+nodejs 的酒店客房预定管理系统的设计与实现

目录技术栈选择系统模块划分后端实现前端实现中间层实现数据库设计支付集成测试与部署项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术栈选择 Spring Boot 作为后端框架&#xff0c;提供 RESTful API 接口&#xff1b;Vue.…...

如何在Windows上实现高效完整的安卓应用安装:APK-Installer进阶指南

如何在Windows上实现高效完整的安卓应用安装&#xff1a;APK-Installer进阶指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK-Installer是一款专为Windows系统设…...

LVGL项目实战:用思源字体让嵌入式屏幕完美显示中文(Gui Guider 1.7.1+版本指南)

LVGL项目实战&#xff1a;用思源字体让嵌入式屏幕完美显示中文&#xff08;Gui Guider 1.7.1版本指南&#xff09; 在嵌入式UI开发中&#xff0c;中文显示一直是开发者面临的棘手问题之一。传统方案需要手动提取字模、管理字库&#xff0c;既耗时又容易出错。而LVGL结合Gui Gui…...

使用Dify快速搭建CasRel模型应用:无需编码的AI工作流

使用Dify快速搭建CasRel模型应用&#xff1a;无需编码的AI工作流 你是不是也遇到过这样的场景&#xff1f;手里有一堆非结构化的文本数据&#xff0c;比如产品说明书、新闻稿或者客服对话记录&#xff0c;想从中自动找出“谁对谁做了什么”这类关系信息。传统方法要么需要写复…...