seb*_*seb 0 c python matlab pointers
我是一名物理专业的学生,主要是用Python和Matlab编程,现在进入C语言以提高我的模拟性能.
简单的问题:Python中有指针吗?Matlab中有指针吗?如果是的话,我可以使用与C中类似的"轻松"吗?
我知道在Python和Matlab的高级别背后,有很多指针在起作用.问题是:我可以在Python或Matlab中明确地执行类似C代码的操作:
int *p;
int someValue = 1;
p = &someValue;
doSomethingForMe = callSomeFunction(p);
Run Code Online (Sandbox Code Playgroud)
我知道无论如何都可能没有意义(对于大多数应用程序).我只是想学习.
你会经常听到Python有名字,而不是传统意义上的"变量".它也没有"指针",因为这样的概念只有在低级别工作时才有意义,比如C语言.(因此,如果你在Python中使用C兼容性库,你就可以得到"指针" ctypes.但是,这样的指针仅用于与C的互操作性.)
您在C中使用指针的大部分功能都以Python中的其他形式出现.例如:
int foo(int *, int *)返回两个整数(可能是错误代码).在Python中,只需使用元组解包:x, y = foo()with return x, yin foo.修改输入参数.通过选择适当的可变输入,大多数情况都是可能的.例如,您可以将列表传递给函数并修改函数中的列表.在Python中,由于引用相同,输入列表似乎会被修改:
def change_list(l):
l[0] = 3
my_list = [1,2,3]
change_list(my_list)
print(my_list) # prints [3, 2, 3]
Run Code Online (Sandbox Code Playgroud)MATLAB有一个与Python不同的变量概念.在MATLAB中,变量是具有某些维度的矩阵.编写x = y有效拷贝y到x(设置xs尺寸适当).除非必要,MATLAB在内部进行优化以避免实际复制数据,但对于程序员来说,它看起来好像是x并且y是单独的矩阵.
除非您正在处理已编译的MEX扩展(用其他语言编写,如C),否则MATLAB也没有指针.与Python一样,您可以在不需要指针的情况下传递内容(例如,多个输入和输出参数).