我在

Python 2.7中有一个字符串数组,我想通过ctypes传递给C函数:

unsigned int SetParams(unsigned int count, const char **params)

所以我可以在python中定义参数:

import ctypes as ct

lib = ct.cdll.LoadLibrary('...')

lib.SetParams.restype = ct.c_uint

lib.SetParams.argtypes = [ct.c_uint, ct.POINTER(ct.c_char_p)]

但是现在当我在Python函数中给出一组参数时,我想在上面的库调用中使用它,我该如何实际调用它?我在想这样的事情:

def setParameters(strParamList):

numParams = len(strParamList)

strArrayType = ct.c_char_p * numParams

strArray = strArrayType()

for i, param in enumerate(strParamList):

strArray[i] = param

lib.SetParams(numParams, strArray)

我刚开始使用ctypes并想知道是否有更自动化的方法来执行此操作?赋值strArray [i] = param实际上是重新分配的吗?如果是这样,这似乎相当昂贵 – 有没有办法这样做只是将字符串指针指向Python分配的缓冲区,或者它们不是以NULL结尾?

更新我确实查看了几个相关的问题,但找不到直接处理相同问题的问题.非常感谢你

python定义一个字符串数组赋值_Python ctypes:传递一个字符串数组相关推荐

  1. 【Groovy】Groovy 方法调用 ( 字符串切割 | 使用 Java 语法切割字符串 | 使用 Groovy 语法切割字符串直接为变量赋值 | 数组赋值给变量 变量个数小于等于数组长度 )

    文章目录 一.字符串切割 1.使用 Java 语法切割字符串 2.使用 Groovy 语法切割字符串直接为变量赋值 3.数组赋值给变量 变量个数小于等于数组长度 二.完整代码示例 一.字符串切割 在 ...

  2. 二维数组作为形参,传递二维数组的值

    二维数组作为形参,传递二维数组的值 void trfind(int (*Array)[3]); void trfind(int (*Array)[3]) {int a[][3] = {1, 2, 3, ...

  3. python 二维数组赋值_python日常注意小知识集锦

    python日常注意小知识集锦 @toc sort()和sorted() 以列表结果为例 - sort()没有结果返回,但对列表进行了排序(列表本身被改变) - sorted(),全局函数,有结果返回 ...

  4. python 二维数组赋值_Python中多个变量的灵活处理

    我们都知道Python是一个非常灵活的语言,以至于如果它不是你的第一门语言,你会发现它总能给你各种各样的惊喜,让你忍不住惊叹:woc,还有这种操作.尤其我在系统地学习Python之前是Java后端出身 ...

  5. python定义一个类怎么弄_Python怎么创建一个类

    Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. Python使用class语句来创建一个新类,class之后为类的名称并以冒号结尾:clas ...

  6. python三维矩阵赋值_Python的多维空数组赋值方法

    Python里面的list.tuple默认都是一维的. 创建二维数组或者多维数组也是比较简单. 可以这样: list1 = [1,2,] list1.append([3,4,]) 可以这样: list ...

  7. python用循环输入给数组赋值_python二维数组重复赋值问题

    今天在写程序时遇到一个怪异的问题,采用双重for循环对一个二维数组中的每一个元素进行赋值,结果发现,它们的每一列都一起改变了.例子如下: k = 0 a = [[0] * 3] * 3 for i i ...

  8. python定义函数的组成部分有_Python文档学习笔记(4)--定义函数

    定义函数 关键字 def 引入函数的定义.其后必须跟有函数名和以括号标明的形式参数列表.组成函数体的语句从下一行开始,且必须缩进. 执行 一个函数会引入一个用于函数的局部变量的新符号表. 因此,在函数 ...

  9. python定义变量类型为数字_python 学习(四)- 变量类型

    一.变量的定义和使用 为什么需要变量?当然是通过变量来存储数据,而存储的数据类型可能是数字.字符串.字符等等,将这些数据存储在变量中,可以方便我们去使用,除了变量之外还有一个常量,区别就是,常量是不可 ...

最新文章

  1. Java中对HashMap的深度分析
  2. 13个球一个天平,现知道只有一个和其它的重量不同,怎样称才能用三次就找到那个球?...
  3. 为什么充电电流变化有点大
  4. BPM实例分享:如何设置表单字体样式
  5. php7.0 yield,PHP7中生成器的新特性 yield-from amp;amp; return-values
  6. 数据结构:分块-区间加法、区间乘法和单点查询
  7. 【SVN】SVN 的使用新手指南,具体到步骤详细介绍----TortoiseSVN
  8. Expected authority at index 7: hdfs://
  9. PKU《程序设计导引及在线实践》刷题记录(上)
  10. 发那科机器人点位编辑_分步详解 | 发那科机器人如何进行零点标定
  11. jmeter下载文件
  12. 2017 Multi-University Training Contest 5 solutions BY 吉如一
  13. (转贴)联想员工亲历联想大裁员:公司不是家
  14. 宽带速率单位《Mbps-MBps/换算》
  15. Android使用开源框架完成城市列表三级联动(从服务端获取数据源和自定义json数据源)
  16. Android遥控车软件设计,手机APP控制,Wifi遥控小车设计资料分享
  17. 爱奇艺APP的自动化录制回放系统 全云化处理新体验
  18. 小程序使用canvas绘画、签名。wx.canvasToTempFilePath安卓机生成图片背景色为黑色
  19. 杜教筛时间复杂度证明
  20. mkimage工具将zImage转换为uImage

热门文章

  1. VS code 设置多行注释快捷键
  2. 校招 | 华为终端云服务招聘NLP、CV、推荐和大数据等岗位
  3. 基2FFT算法matlab程序编写,按时间抽取的基2FFT算法分析及MATLAB实现
  4. initWithFrame/initWithCode/awakeFromNib调用
  5. ViewPager 优化
  6. 各大有名库的介绍(转)
  7. aws php 上传文件 限制大小_php如何实现文件上传下载-PHP问题
  8. 抢票(python)
  9. php 7.3 新特性
  10. 2020年第十一届蓝桥杯A组省赛