2020-09-26:请问rust中的&和c++中的&有哪些区别?

福哥答案2020-09-26:#福大大架构师每日一题#

变量定义:c++是别名。rust是指针。
取地址和按位与,c++和rust是相同的。

c++测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
struct Point {
    int x;
    int y;
};
 
int main()
{
    Point p1 = { 25,25 };
    printf("p1.x address:%d\r\n", &p1.x);
    printf("p1 address:%d\r\n", &p1);
    Point& p2 = p1;
    printf("p2.x address:%d\r\n", &p2.x);
    printf("p2 address:%d\r\n", &p2);
    printf("p1和p2地址相同,说明p2起到了别名的作用。p2.x和p2地址相同,说明p2保存的是内容,而不是地址。\r\n");
    std::system("pause");
    return 0;
}

  

 

运行结果如下:

 

 


rust测试代码如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
    let p2: &Point = &p1;
    println!("p2.x address: {:p}", &p2.x);
    println!("p2 address: {:p}", &p2);
    println!("p1和p2地址不同,说明p2不是p1的别名。p2.x和p2地址不同,说明p2是指针。");
}

  

运行结果如下:

 

 


***
[评论](https://user.qzone.qq.com/3182319461/blog/1601075072)

posted @   福大大架构师每日一题  阅读(298)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示