0

单行方法并分别更新每个变量有什么用?这是否将 3 个内存写入操作优化为一个?

或者有没有其他方法可以通过单个内存写入操作将所有值写入结构中?

theTest[0] = (test_t){7,8,9};
   (and)
theTest[0].var1 = 7
theTest[0].var2 = 8
theTest[0].var3 = 9


typedef struct
{
  int var1;
  int var2;
  int var3;
} test_t;
test_t theTest[2];
4

1 回答 1

1

使用给定的struct定义,这两个选项的语义是相同的——从 C 的角度来看,没有区别。如果结构包含更多字段,则第一个选项会将这些字段归零,而第二个选项则不会。

实际上,是否可以使用一次内存写入取决于您正在编译的体系结构提供的最大内存写入的大小。对于大型结构,第一个选项可能会导致编译器使用(可能内联)调用memcpy().

没有任何强烈的理由偏爱其中一个 - 使用您认为最整洁的任何一个。

于 2013-09-11T05:56:45.240 回答