Golang cgo编程 [] string 转 C语言 char**

简介:


1
2
3
4
5
6
7
8
9
10
11
12
func Test(args[] string){
    arg := make([](*_Ctype_char), 0)   //C语言char*指针创建切片
    l := len(args)
    for  i,_ := range args{
        char  := C.CString(args[i])
        defer C. free (unsafe.Pointer( char ))  //释放内存
        strptr := (*_Ctype_char)(unsafe.Pointer( char ))
        arg = append(arg, strptr)   //将char*指针加入到arg切片
    }
                                                                                  
    C.test(C. int (l), (**_Ctype_char)(unsafe.Pointer(&arg[0])))   //即c语言的main(int argc,char**argv)
}

上段代码为go语言传进os.args的参数行命令(string切片),通过cgo来调用,传给C语言层

的main(int argc,char**argv) 这里,已重命名C代码的main()函数为test(),主进程由go来启动


golang运用cgo调用C代码,golang的 [ ]string 转C语言的 char**,步骤为上述代码的2-9行。










本文转自 ponpon_ 51CTO博客,原文链接:http://blog.51cto.com/liuxp0827/1344922,如需转载请自行联系原作者
目录
相关文章
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
369 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
Unix Linux Go
go进阶编程:Golang中的文件与文件夹操作指南
本文详细介绍了Golang中文件与文件夹的基本操作,包括读取、写入、创建、删除和遍历等。通过示例代码展示了如何使用`os`和`io/ioutil`包进行文件操作,并强调了错误处理、权限控制和路径问题的重要性。适合初学者和有经验的开发者参考。
329 4
|
Java
【编程基础知识】switch case可以用string(千万注意要加上break)
本文详细探讨了Java中`switch`语句使用字符串时的注意事项,重点讲解了`break`语句的重要性。通过代码示例和流程图,帮助读者正确理解和使用`switch`语句,避免常见的编程错误。
891 4
|
安全 Java
【编程基础知识】《Java 字符串大揭秘:String、StringBuffer 与 StringBuilder 的精彩较量》
本文详细解析了 Java 中的 String、StringBuffer 和 StringBuilder 三个字符串处理类,通过特点、用法及代码示例,帮助读者理解它们在不同场景下的应用,提升字符串处理效率。
139 2
|
数据库连接 Go API
Golang中的25个常见错误:更好地进行go编程的综合指南
Golang中的25个常见错误:更好地进行go编程的综合指南
|
存储 Go 索引
Golang 中的 String、rune 和 byte
Golang 中的 String、rune 和 byte
|
测试技术 Go API
golang []byte和string的高性能转换
golang []byte和string的高性能转换
283 1
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
|
存储 编译器 C语言
【C++航海王:追寻罗杰的编程之路】string类
【C++航海王:追寻罗杰的编程之路】string类
137 0
|
存储 Web App开发 编译器
C语言程序设计——int,double,char的用法
C语言程序设计——int,double,char的用法

推荐镜像

更多