【发布时间】:2020-12-17 15:16:38
【问题描述】:
我想知道初始化结构成员的最佳做法是什么。
例如,对于这个结构,哪个选项更好,为什么?尤其是可读性和性能方面?
typedef struct
{
int a;
char b;
} str_t;
选项 1
void foo1(int param_a, char param_b)
{
str_t str = {
.a = param_a,
.b = param_b
};
...
}
堆栈中省略的成员是什么,零或垃圾?
选项 2
void foo2(int param_a, char param_b)
{
str_t str;
str.a = param_a;
str.b = param_b;
...
}
此选项将允许零初始化(使用= {0};)。但我猜这会强制运行时分配,对吧?
奖金
另外,常数值会有所不同吗?
void foo1()
{
str_t str = {
.a = 5,
.b = 10
};
...
}
void foo2()
{
str_t str;
str.a = 5;
str.b = 10;
...
}
【问题讨论】:
标签: c software-design readability code-readability