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,结构体 在前面我们知道变量和数组都可以用来存储数据,变量用来存储单个数据,数组可以用来存储一组同类型的数据,但你有没有发现--它们都只适合单一属性的数据.那现实生活中,很多对象都是具有多属性的.例 ... 
随机推荐
- 使用 ww.cad 完成dwg文件转shp(包含所有属性)
			单纯使用ArcEngine提供的接口读取dwg数据转shp存在众多属性无法读取的情况(最直观的 南方cass生产的dwg文件有SOUTH这一字段,为目标要素的类型) private void Conv ... 
- 云原生API网关全生命周期管理Apache APISIX探究实操
			@ 目录 概述 定义 NGINX 与 Kong 的痛点 APISIX 的技术优势 特性 架构 应用场景 主要概念 部署 快速入门 quickstart安装 Admin API创建路由 RPM安装 安装 ... 
- Yolov5——训练目标检测模型
			项目的克隆 打开yolov5官网(GitHub - ultralytics/yolov5 at v5.0),下载yolov5的项目: 环境的安装(免额外安装CUDA和cudnn) 打开anaconda ... 
- Java面试——Nginx
			一. 二.Nginx 的优点 [1]速度更快:这表现在两个方面:一方面,在正常情况下,单次请求会得到更快的响应:另一方面,在高峰期(如有数以万计的并发请求),Nginx 可以比其他 Web服务器更快地 ... 
- 在k8s安装CICD-devtron
			在k8s安装CICD-devtron 先前条件 <kubernetes(k8s) 存储动态挂载>参考我之前的文档进行部署https://www.oiox.cn/index.php/arch ... 
- 【CTF】关于 .init .fini .init_array .fini_array  日志 2019.7.16 pwn
			查找资料的高效性 retn 返回到栈顶地址 关于 .init .fini .init_array .fini_array 其中存放着的是在main函数执行前执行的代码,由__libc_start_ma ... 
- 五月十三号Java基础知识点
			1.getFields()和getMethods()方法获得权限为public的本类的以及父类继承的成员变量和成员方法2.getDeclaredFields()和getDeclaredMethods( ... 
- Redis 数据类型 String
			Redis 数据类型 String Redis主要支持的数据类型有5种:String ,Hash ,List ,Set ,和 Sorted Set Redis 常用命令,思维导图 >>&g ... 
- 你真的懂synchronized锁?
			1. 前言 synchronized在我们的程序中非常的常见,主要是为了解决多个线程抢占同一个资源.那么我们知道synchronized有多种用法,以下从实践出发,题目由简入深,看你能答对几道题目? ... 
- Kubernetes入门实践(YAML)
			YAML是Kubernetes的标准工作语言 YAML介绍 Kubernetes使用了YAML语言一个非常关键的特性,叫作"声明式",对应的有另外一个词: "命令式&qu ... 
