我需要在Swift中设置一个C结构吗?

nac*_*o4d 2 c struct memset swift

AFAIK,在swift中,调用类/结构的默认初始化器会将所有内容初始化为0,nil.在C(例如套接字编程)中,有时memset用于在使用struct之前将所有内容设置为0.我是否需要在swift中使用memset,或者我写它的方式很好?

(BTW,在这种情况下memset使用是因为hints除了2个参数以外应该设置为0.非0(垃圾等)res在调用时会产生副作用getaddrinfo.

C:

struct addrinfo hints, *res;
int status;

memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;

status = getaddrinfo(NULL, MYPORT, &hints, &res);
Run Code Online (Sandbox Code Playgroud)

迅速:

var res = UnsafeMutablePointer<addrinfo>()
var hints = addrinfo()
hints.ai_family = AF_UNSPEC
hints.ai_socktype = SOCK_STREAM

let status = getaddrinfo(nil, MYPORT, &hints, &res)
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 8

Xcode 6.3发行说明:

导入的C结构现在在Swift中有一个默认的初始化器,它将所有struct的字段初始化为零.

意思就是

var hints = addrinfo()
Run Code Online (Sandbox Code Playgroud)

将所有字段初始化struct addrinfo为零,无需调用memset().