[关闭]
@EggGump 2018-08-27T17:22:20.000000Z 字数 615 阅读 574

ctypes数组部分学习记录

python


python3.6.5

  1. #定义数组
  2. array = c_int*10
  3. myArray = array(1,2,3,4,5)
  4. for i in myArray:
  5. print(i)

这里定义的大小是10,如果没填满就黙认是0
结果截图:Pb9t1J.png

  1. #二维数组,接前面
  2. array2 = array*2
  3. myArray2 = array2(myArray,myArray)
  4. #此时,该二维数组里有两个一维长度为10的一维数组

看截图:
PbCS4U.png
这里我的变量定义名字有点变化

下面我们来把python里面的数组传到c里面再输出,这里是例子截图
test.c
PbPbmn.png
test.py
PbPLT0.png
编译:
PbPzpF.png
运行截图
Pbip6J.png

再来一个有返回值的

  1. int array2(int a[][10]){
  2. int i = 0;
  3. for (i = 0; i < 2; i ++){
  4. int j = 0;
  5. for(j = 0; j < 10; j ++){
  6. printf("%d,",a[i][j]) ;
  7. }
  8. printf("\n");
  9. }
  10. return i ;
  11. }
  1. from ctypes import *
  2. #load the shared object file
  3. adder = CDLL('./test.so')
  4. array = c_int * 10
  5. myArray = array(1,2,3,4,5,6,7,8,9,10)
  6. array2 = array*2
  7. myArray2 = array2(myArray,myArray)
  8. result = adder.array2(myArray2)
  9. print("python:",result)

结果截图:
Pbic3F.png

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注