jer*_*iff 3 c python arrays pointers
我正在读这个问题:无法返回int数组,因为我遇到了同样的问题.
似乎在函数内本地声明的数据结构(因为C显然可以返回本地声明的变量)不能返回,在本例中是一个数组.
然而,Python不会遇到同样的问题; 据我所知,可以在函数中声明一个数组并返回该数组而不必将其作为参数传递.
引擎盖下有什么区别?Python是否隐式使用指针(在函数中使用malloc)?
对于记录,Python的内置可变序列类型称为a list,而不是数组,但它的行为类似(它只是动态可调整大小,如C++的std::vector).
无论如何,你是正确的,所有Python对象都是隐式动态分配的; 只有它们的引用(粗略地,指针)在"堆栈"上(也就是说,Python解释器堆栈和C级堆栈与开始时不一样).可比较的C代码将动态地分配数组并返回指向它的指针(free完成后调用它;不同的Python解释器以不同的方式处理它,但是list当不再以某种方式引用时将被垃圾收集).
Python没有"堆栈数组"的真正概念(它总是返回单个对象,尽管该对象可能是tuple模拟多个返回值),因此返回总是最终是一个"指针"值(对返回对象的引用) .
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |