2020-09-25:rust中Point是结构体类型,【let p1=Point{x:25,y:25};let p2=p1;】请问p1和p2是同一个对象吗?
福哥答案2020-09-25:#福大大架构师每日一题#
不是同一个对象。p1和p2直接存内容,不存地址。这点跟java里的new对象是不一样的。
p1.x和p1的地址相同,说明p1存的是内容,而不是地址。
p1.x和p2.x的地址不同,说明p1和p2的内存空间不一样,不是同一个对象。
有些人会抬杠,说rust里没有对象。
rust我学得不深入,难免会出错。反汇编,我还没看,不排除rust做了优化。有不对的地方,请直接留言,表达自己的观点,我欣然接受。
测试代码如下:
struct Point {
x: i64,
y: i64,
}
fn main() {
let p1 = Point { x: 25, y: 25 };
println!("p1.x address: {:p}", &(p1.x));
println!("p1 address: {:p}", &p1);
println!("p1.x和p1的地址相同,说明p1存的是内容,而不是地址。");
println!("------------");
let p2 = p1;
println!("p2.x address: {:p}", &(p2.x));
println!("p2 address: {:p}", &p2);
println!("p1.x和p2.x的地址不同,说明p1和p2的内存空间不一样,不是同一个对象。");
}
代码运行结果如下:
***
[评论](https://user.qzone.qq.com/3182319461/blog/1600988404)
2020-09-25:rust中Point是结构体类型,【let p1=Point{x:25,y:25};let p2=p1;】请问p1和p2是同一个对象吗?的更多相关文章
- 【转】C语言中不同的结构体类型的指针间的强制转换详解
C语言中不同类型的结构体的指针间可以强制转换,很自由,也很危险.只要理解了其内部机制,你会发现C是非常灵活的. 一. 结构体声明如何内存的分布, 结构体指针声明结构体的首地址, 结构体成员声明该成员在 ...
- 黑马程序员——Foundation中的OC结构体
<span style="font-size:14px">------<a target="_blank" href="http:/ ...
- C语言中的系统时间结构体类型
在C语言涉及中经常需要定时触发事件,涉及到获取系统时间,其结构体类型有多种.Unix/Linux系统下有以下几种时间结构: 1.time_t 类型:长整型,一般用来表示从1970-01-01 00:0 ...
- Swift中元组(Tuples),结构体(Struct),枚举(Enums)之间的区别
Swift有许多种存储数据方式,你可以用枚举(enums),元组(tuples),结构体(structs),类(classes),在这篇文章中我们将比较枚举.元组.结构体之间区别,首先从最简单的开始- ...
- MFC中的NMHDR结构体和NMUPDOWN结构体
建立spin控件,创建UDN_DELTAPOS一个消息函数后: void CSpinDlg::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) { NM ...
- C语言中 不定义结构体变量求成员大小
所谓的求成员大小, 是求成员在该结构体中 用 sizeof(结构体名.结构体成员名) 求来的. 很多时候我们需要知道一个结构体成员中的某个成员的大小, 但是我们又不需要定义该结构体类型的变量(定义的话 ...
- 剔除list中相同的结构体数据
剔除list中相同的结构体数据,有三个思路:1.两层循环,逐个比较 2.使用set容器来剔除 3.使用unique方法去重 // deduplication.cpp : 定义控制台应用程序的入口点. ...
- C# 中 System.Index 结构体和 Hat 运算符(^)的全新用法
翻译自 John Demetriou 2019年2月17日 的文章 <C# 8 – Introducing Index Struct And A Brand New Usage For The ...
- C# 中的只读结构体(readonly struct)
翻译自 John Demetriou 2018年4月8日 的文章 <C# 7.2 – Let's Talk About Readonly Structs>[1] 在本文中,我们来聊一聊从 ...
- 如何系统学习C 语言(中)之 结构体篇
1,结构体 在前面我们知道变量和数组都可以用来存储数据,变量用来存储单个数据,数组可以用来存储一组同类型的数据,但你有没有发现--它们都只适合单一属性的数据.那现实生活中,很多对象都是具有多属性的.例 ...
随机推荐
- List<dto> 转List<map>
/** * list<DTO> 转 list<Map<String,Object>> * * @param list * @param <T> * @r ...
- F - Substring of Sorted String
题目链接 题解(树状数组) 我们维护两个树状数组,一个记录 \(1\sim i\) 中 \(s_i>s_{i+1}\)的数量,即逆序对数量,另一个记录 \(1\sim i\) 中 \(26\) ...
- (转)codeblocks 使用研究
原帖:http://github.tiankonguse.com/blog/2014/10/11/codeblocks-shutcut.html 使用前 使用 codeblocks 前肯定是下载安装 ...
- MySQL 某一列的值加入到另一列
0.背景 文件url 文件名 /usr/local/img/goods/1/2021-12-22-e05bb433bc7a451ca5d7cc9d505d8ed8.jpg 酸枣糕.jpg /usr/l ...
- 关于js通过修改行内样式来修改元素样式
关于js通过修改行内样式来修改元素样式 1.当我们通过使用js来修改html元素的样式时,使用的方法是为元素添加行内样式, 此时的js样式是生效的,因为行内样式优先级高于类名 2.如果已有同属性的行内 ...
- 后疫情时代,RTE“沉浸式”体验还能这么玩?丨RTE 2022 编程挑战赛赛后专访
前言 9 月 17 日,由声网.环信与 RTE 开发者社区联合主办的"RTE 2022 编程挑战赛"圆满落幕.从 300+ 支参赛队伍中冲出重围的 27 支决赛队伍,在元宇宙中用精 ...
- swagger-ui 导出离线文档md格式
<dependency> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger ...
- 解放生产力:30+实用AI工具汇总
除了ChatGPT,还有哪些好用AI工具?带着这个问题,也为了解AIGC已经在哪些场景落地,我体验了30多个AI工具并且分享出来,希望对你有帮助. 文字 ChatGPT -- 解决任何问题地址:htt ...
- 音质效果不错的Pcie声卡之CM8828听歌声卡
CM8828芯片是cmedia骅讯公司生产的,采用这个芯片的声卡价格不一,便宜的100多,贵一点的500多.价位在100多买到这款声卡还是比较实惠的,再高一点的声卡都是堆料的.CM8828声卡是原生的 ...
- 为什么我推荐你使用 systemd timer 替代 cronjob?
概述 前几天在使用 Terraform + cloud-init 批量初始化我的实验室 Linux 机器.正好发现有一些定时场景需要使用到 cronjob, 进一步了解到 systemd timer ...