如何解决初始化C结构与分配成员
我想知道初始化结构成员的最佳实践是什么。
例如,对于此结构,哪个选项更好,为什么?尤其是在可读性和性能方面?
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;
...
}
解决方法
选项1起作用。未提及的元素将被“零初始化”-给定默认值为零。它可以与函数中的static
变量一起正常使用。这应该是您的首选。
选项2也有效。可能会慢一些。 static
变量完全不合适;分配在每次调用该函数时发生。
奖金:在初始化程序中使用常量而不是变量对分析几乎没有影响-使用指定的初始化程序的选项1是最好的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。