c++——取地址(引用)和取内容(解引用)操作

今天又做蒙了一道题,把思考和实验记录下来。

struct sk{
int a; float b;}data;
int *p;
若要使p指向data中的a域,正确的赋值语句是
p=&a;	p=data.a;	p=&data.a;	*p=data.a

前两个可以很容易看出错误之处,a是结构体内的变量,需要加上结构体来限制,p是指针类型,不能赋给int类型,后两个好像没什么毛病,一个是把data成员a的地址给p,另一个是将data成员a的值作为p指向的内容,但答案确实前者。
经过实验我发现确实是p=&data.a正确,后者输出会为空,也就是并没赋上值,结果展示如下:
*p=data.a
输出为空
正确输出如下:p=&data.a
正确输出
同时我也发现了问题,为啥写成*p=data.a时连正常输出data.a也不成了,并且编译也没错啊,实在找不到这句话的逻辑错误,我把结构体的内容改成常规变量重新实验,结果展示如下:
结构体换成常规变量
输出正确结果
可以看到p指针指向的内容的的确确被修改了,也就是说换成常规变量后代码是执行成功了的,那为什么在结构体内就不成呢?
经过一番交流探索发现,首先输出不出来的原因是因为指针未初始化,此时直接解引用会覆盖之前原有的内容,导致程序莫名其妙的错误;另外我思考的和题目的侧重点不同,题目要求是指向a的 而我更多关注只是指针指向值的变化,也就是题目是要求指针地址的变化,而我只实现了指针指向内容的变化,指针本身未变,新的实验和结果如下:
新实验程序
输出结果
首先可以看到经过初始化后的指针已经能够正确输出结构体的值,但是使用*解引用赋给的值只是改变了指针指向的内容,而指针地址未变,使用&取地址才能改变指针的地址。

总结

&引用可以使指针指向该内容,*可以使指针指向的内容更改,结合赋值语句都可以理解为为原有数据创建分身,只不过一个是指向原数据的分身,对分身的操作等同于操作原体,另一种则相当于是给数据做了个备份,故采取这种方法也失去了我们使用指针的原本含义。
此外,坚持创建即初始化这个好习惯,要不然可能引发未知的错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/185510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P0级事故频发后,这家公司终于醒悟了!

近期,国内的互联网大厂接连爆发P0级事件,阿里云崩完滴滴崩,企业在追求效益的前提是业务的连续和稳定。如果发生故障不能快速恢复,引发业务中断,给企业带来的损失是巨大的,换言之,企业需要一套清…

OFDM通信连路仿真学习

文章目录 前言一、前置知识1、块状导频与梳状导频①、相似点②、区别③、其他 2、其他知识 二、仿真任务及方案1、仿真任务2、仿真方案 三、MATLAB仿真1、MATLAB 源码2、程序流程3、仿真结果①、打印信息③、8PSK 星座图②、脉冲成型图③、ETU300登加AWGN信道下误比特率曲线 四…

Windows系统搭建Appium 2 和 Appium Inspector 环境

前言 自 2022 年 1 月 1 日起,Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x,需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具,它带来了以下重要改进:  …

PowerDesigner数据库建模软件的安装

解压: 解压好以后,点击PowerDesigner.exe安装 这个安装的版本是15 选择安装路径,可以默认可以自定义: 直接点next: 全选了 点击next: 点击next: 点finish 汉化: 先把pojie和汉化文件…

Redis:主从复制

目录 概念配置步骤通过命令配置主从复制原理薪火相传反客为主哨兵(Sentinel)模式原理配置SpringBoot整合Sentinel模式 概念 主机更新后根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,Slave以读为主。 作用: …

JVM 字节码

JVM概述 问题引出 你是否也遇到过这些问题? 运行着的线上系统突然卡死,系统无法访问,甚至直接OOM!想解决线上JVM GC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然,直接默认吧&…

ssm的鲜花销售系统(有报告)。Javaee项目。

演示视频: ssm的鲜花销售系统(有报告)。Javaee项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvc Mybatis…

python用YOLOv8对图片进行分类

用yolov8的模型进行分类 先上效果图 图片资源 模型下载地址 https://github.com/ultralytics/ultralytics 代码 import matplotlib.pyplot as plt from ultralytics import YOLO from PIL import Image import cv2model YOLO(../ultralytics/yolov8n.pt)# print(model…

一款好用的windows窗口置顶工具

常用的windows窗口置顶工具如下,但是实际操作下来都不太好用或者有时不生效,导致窗口无法置顶,工作效率低频。 DeskPins 是一个允许用户将任何窗口(包括顶级窗口和对话框)置顶于桌面的工具。如果你正在寻找类似 DeskPi…

innovus如何检查missing via

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 verifyConnectivity innovus检查绕线的missing via可以使用verifyConnectivity命令,如果有net routing missing via问题,会报告pieces of net are not …

C语言——指针(三)

📝前言: 上篇文章C语言——指针(二)中对:指针的运算和指针变量类型对指针使用的影响开展了进一步的探讨,这篇文章我们继续学习一下指针与一维数组之间的关系: 1,对数组名的理解 2&am…

MySQL5.7下载安装教程

Mysql5.7下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip 特别说明: 如果安装过程中出错可以卸载重装。具体步骤: 1、先在控制面板下载所有带MySQL的软件。 2、删除相关文件夹,可以使用Every…

python + mongodb使用入门

最近用了下mongodb ,简单做个记录: 1.启动系统mongo服务 mongod -f mongod.conf其中 mongod.conf 是配置文件,示例如下: dbpath/youpath/data/db #数据库保存位置 logpath/youpath/data/mongod.log #日志 logappendtrue fo…

突发,合肥一废品回收站发生火灾,富维AI神器助力防灾

昨晚,合肥一废品回收站突发火灾,火光冲天,烟雾蔓延。幸亏及时发现,消防人员迅速到场,控制了火势。这起事件让我们再次认识到火灾报警的重要性。而在这方面,北京富维图像公司的FIS智能图像识别系统就发挥了巨…

#HarmonyOS:软件安装

软件地址 https://developer.harmonyos.com/cn/develop/deveco-studio#download 安装的建议 这个界面这样选,其他界面全部按照默认路径往下走!!! 等待安装… 安装环境错误处理 一般就是本地node配置一场导致,建议…

springboot 中通过定时任务备份数据库并压缩传输到指定另外一台linux服务器得文件夹中 或 发送压缩包到指定邮箱

1、将JSch和邮件插件添加到项目pom文件中。Maven <!--java 通过JSch操作Linux--> <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version> </dependency><!-- 邮件模板…

ElementPlusError: [ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档

使用element table出现这个错误好几回了&#xff0c;今天把它记录一下&#xff0c;并把错误原因复盘一遍。具体如下&#xff1a; 错误截图 原因 其实这个错误挺迷的&#xff0c;我把各种情况都测试了一遍&#xff0c;最后发现是因为给 翻页参数 total 传值错误导致的。 总结…

实时沟通,实时增长:企业使用WhatsApp Business的不二选择

在数字化浪潮中&#xff0c;WhatsApp Business崭露头角&#xff0c;成为企业与客户之间沟通的新利器。今天运营坛将和大家深入探讨WhatsApp Business在2023年为企业带来的机遇&#xff0c;从增长率、客户群体、功能特性以及优势等方面剖析为何企业需要充分利用这一强大工具。 W…

鸿蒙4.0开发笔记之ArkTS装饰器语法基础@Builder组件内自定义构建函数与@Styles自定义组件重用样式(十)

文章目录 一、Builder自定义构建函数1、什么是自定义构建函数2、组件内定义构建函数3、组件外定义构建函数4、Builder装饰器练习 二、Styles重用样式函数1、重用样式的作用2、组件内定义Styles3、组件外定义4、Styles装饰器练习5、注意要点 一、Builder自定义构建函数 1、什么…

微信小程序 slider 翻转最大和最小值

微信小程序 slider 翻转最大和最小值 场景代码示例index.wxmlindex.jsutil.js 参考资料 场景 我想使用 slider 时最左边是 10 最右是 -10。 但是想当然的直接改成<slider min"10" max"-10" step"1" /> 并没用。 查了文档和社区也没有现成…