You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现类似C语言&reg_value[2]的效果,将数组reg_value[2]的起始引用传递给函数

在Python中实现类似C语言传递数组元素地址的效果

嘿,这个问题问到点子上了!Python里没有C语言那样的指针概念,但我们可以利用array.array的切片视图特性,轻松实现你想要的效果——从指定元素位置开始访问后续数据,甚至还能保持和原数组的关联(修改切片会同步到原数组)。

解决方法:使用数组切片传递起始位置

array.array的切片操作(比如reg_value[2:])会返回原数组的视图,而不是副本。这意味着它直接指向原数组从索引2开始的底层数据,和C语言中&reg_value[2]的作用非常接近。

修改后的代码如下:

import array
reg_value = array.array('I', [0]*100)

def postdata(data):
    for i in range(2):
        print(data[i])

reg_value[0] = 1
reg_value[1] = 2
reg_value[2] = 3
reg_value[3] = 4

# 传递从索引2开始的切片,对应C中的&reg_value[2]
postdata(reg_value[2:])

运行这段代码,就会打印出3和4,完美符合你的需求。

额外说明:切片视图的特性

  • 共享数据:和C指针一样,如果你在函数里修改切片的元素,原数组对应的位置也会同步变化。比如在postdata里添加data[0] = 10,那么reg_value[2]的值也会变成10。
  • 效率优势:因为是视图而非副本,不会额外复制数据,处理大数组时效率很高,这和C指针的低开销特性一致。

注意:如果是普通的Python列表,切片会生成副本,但array.array作为一种更贴近底层的数组类型,切片返回的是视图,这正是我们需要的特性。

内容的提问来源于stack exchange,提问作者Pravin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 23:22:28