cancanword 2023-09-08 11:05 采纳率: 88.9%
浏览 1
已结题

Python和C++的内存地址表示为什么不一样?

C++中可以用取址运算符获取内存地址,一般是8位16进制的,python用id()获取地址,但是一般是11位10进制
地址的表示方法为何不同?有什么办法能实现通用吗?

  • 写回答

2条回答 默认 最新

  • 呈两面包夹芝士 2023-09-08 11:06
    关注

    C++和Python使用内存地址的方式不同,主要是因为它们底层实现方式不同。C++是一种直接操作内存的语言,它通过指针来直接访问或者操作内存地址。而Python是一种高级语言,它通常运行在解释器或者虚拟机上,对于内存地址的管理方式并没有直接暴露给用户。

    在C++中,地址通常以十六进制显示,这是因为它直接操作内存,所以显示的地址与底层硬件有关,一般都是8位16进制数。而在Python中,对象的ID一般以十进制显示,这是因为它运行在解释器上,对内存的管理方式进行了抽象,这样可以让Python程序更加独立于底层硬件。

    如果你想在C++和Python之间实现地址的通用,那就需要将底层内存地址映射到高层抽象的数据结构上。例如,你可以在C++中使用指针,而在Python中使用ID或者引用。但是需要注意,这样的操作通常需要对底层的内存管理有深入的理解,而且可能会涉及到一些系统级别的操作,所以需要谨慎处理。

    最后,值得注意的是,虽然这些底层操作可能看起来很有用,但是在大多数情况下,最好还是让语言自己处理这些事情。除非你正在进行一些底层的系统级别的开发,否则你通常不需要直接操作内存地址。在大多数情况下,你应该关注的是如何有效地使用你的代码,而不是如何管理底层的内存。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月16日
  • 已采纳回答 9月8日
  • 创建了问题 9月8日

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,