【发布时间】:2014-09-09 18:25:49
【问题描述】:
是在数组中设置一个指针,还是我只是在此处覆盖指向元素的指针? 当我 memset 整个内存区域或数组中的元素时会更好吗?
例如:
....
struct pollfd fds[2];
int tmp = 0;
for(; tmp < sizeof(fds[0])/sizeof(fds); tmp ++) {
memset(fds[tmp], 0x00, sizeof(fds[tmp]));
}
....
对比
....
struct pollfd fds[2];
memset(fds, 0x00, sizeof(fds[tmp]));
....
【问题讨论】:
-
"...覆盖指向元素的指针..." -- 指向元素的指针是什么?数组对象只包含一系列元素;除非您创建它们,否则没有指向元素的指针。
memset对单个元素或整个数组是否有意义取决于struct pollfd的内容。 -
第二个例子 memset 只有一个元素。要 memset 数组中的所有元素,请使用:
memset(fds, 0x00, sizeof(fds)); -
@deffel:你在说什么“指针”?到目前为止,我在您发布的代码中没有看到一个指针。
-
@deffel:您的第一个代码示例无效(不可编译),这有点破坏了整个问题。让我们从这个开始:你想做什么?当我们不知道您真正想要做什么时,我们应该如何知道什么是“更好的”?
-
另外,你想用
sizeof(fds[0])/sizeof(fds)做什么?你认为这个表达式的结果是什么?