在Swift中怎么使用C语言的指针3篇
在Swift中怎么使用C语言的指针1
C 和Objective-C 不支持多类型的返回值。所以Cocoa API 就使用指针作为函数的输入输出参数,以用来传递多类型的数据。Swift允许使用指针参数进行类似inout 参数的处理,所以你可以使用语法将一个var 变量的引用作为指针参数进行传递。比如说,UIColor的
getRed(_:green:blue:alpha:) 方法,使用4个CGFloat* 指针用来接收颜的组成元素。我们可以使用将这几个颜组成部分装配在本地变量中。
var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 0
另外一个常见的情况出现在Cocoa NSError 类的使用中。很多方法都使用一个NSError__ 参数来保存异常信息。比如说,我们可以通过NSFileManager 类的contentsOfDirectoryAtPath(_:error:) 方法,罗列出指定目录中的信息,一旦出现疑似异常信息,就将其保存在NSError? 类型的变量中。
var maybeError: NSError?
if let contents = NSFileManager.defaultManager()
.contentsOfDirectoryAtPath(“/usr/bin", error: maybeError) {
// Work with the directory contents
} else if let error = maybeError {
// Handle the error
}
为安全起见,Swift 要求在使用传值时,变量必须是已经被初始化的。这是因为Swift 无法知道也无法判断在操作指针之前,该指针是否确实在内存有指向的地址。
在Swift中怎么使用C语言的指针2
在C语言中,指针与数组是水乳x融,纠缠不清的。那么为了在Swift 中能无缝的使用C语言中基于数组的一些API,Swift 允许将Array 作为指针参数。一个不可变数组的`值可以作为一个const 指针参数直接传递,可变数组可以使用作为一个非const 指针参数进行传递,就inout 参数一样。比如,我们使用Accelerate 框架中的vDSP_vadd 函数对数组  a 和数组b 进行相加,将结果写入result 数组:
import Accelerate
let a: [Float] = [1, 2, 3, 4]
let b: [Float] = [0.5, 0.25, 0.125, 0.0625]
var result: [Float] = [0, 0, 0, 0]学swift语言能干什么
vDSP_vadd(a, 1, b, 1, result, 1, 4)
// result now contains [1.5, 2.25, 3.125, 4.0625]
在Swift中怎么使用C语言的指针3
C语言中,传递字符串的主要方式是通过const char* 指针。在Swift 中,String 也可以被用作const char* 指针,用它可以向函数传递空字符串或UTF-8编码的字符串。比如,我们可以在标准的C语言和POSIX的
库函数中直接使用字符串作为参数传递:
puts("Hello from libc")
let fd = open("/", O_WRONLY|O_CREAT, 0o666) if fd 0 {
perror("could not open /")
} else {
let text = "Hello World"
write(fd, text, strlen(text))

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。