c - 我需要在 Swift 中 memset 一个 C 结构吗?

标签 c swift struct memset

AFAIK,在 swift 中,调用类/结构的默认初始化程序会将所有内容初始化为 0nil。 在 C(例如套接字编程)中,有时 memset 用于在使用结构之前将所有内容设置为 0。我是否也需要在 swift 中使用 memset 或者我写的方式就可以了吗?

(顺便说一句,在这种情况下使用 memset 因为 hints 应该设置为 0 除了以下 2 个参数。非 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);

swift :

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

let status = getaddrinfo(nil, MYPORT, &hints, &res)

最佳答案

来自Xcode 6.3 release notes :

Imported C structs now have a default initializer in Swift that initializes all of the struct's fields to zero.

这意味着

var hints = addrinfo()

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

关于c - 我需要在 Swift 中 memset 一个 C 结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971278/

相关文章:

创建 I2C 设备驱动程序结构设置

c++ - 运算符重载中没有运算符 '==' 匹配

c - 二值图像的简单多 Blob 检测?

C - 动态分配单个结构的优点

c - 如何从 C 中包含字符串、空格、换行符和整数的文件中仅读取整数

swift - 用居中的角度渐变填充圆无法正确居中

c - 查询执行中的 Oracle pro*c 指标变量与 NVL

ios - View Controller 的主视图有时在状态栏下,有时不在状态栏下

ios - 在 Objective-C 中以编程方式创建 UIView 并将其放入闭包中

c++ - 我正在尝试为 Kruskal 算法实现一个 C++ 程序,它要求我按权重对图形进行排序。如何按权重对我的结构进行排序