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.
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)
导入的C结构现在在Swift中有一个默认的初始化器,它将所有struct的字段初始化为零.
意思就是
var hints = addrinfo()
Run Code Online (Sandbox Code Playgroud)
将所有字段初始化struct addrinfo为零,无需调用memset().