我有一个结构:
struct MY_TYPE {
boolean flag;
short int value;
double stuff;
};
我知道我可以通过以下方式初始化它:
MY_TYPE a = { .flag = true, .value = 123, .stuff = 0.456 };
但是,现在我需要创建一个指针变量,My_TYPE*
而只想在那里初始化一个字段?我试过例如:
MY_TYPE *a = {.value = 123};
但是我得到了编译器错误"Designator in intializer for scalar type 'struct MY_TYPE *'"
。
是否可以使用一个字段初始化结构?
首先,您正在混淆struct MY_TYPE
和typedef。由于这个原因,发布的代码无效。您必须这样做:
typedef struct
{
bool flag;
short int value;
double stuff;
} MY_TYPE;
然后,您可以使用指向复合文字的指针,以实现所需的内容:
MY_TYPE* ptr = &(MY_TYPE){ .flag = true, .value = 123, .stuff = 0.456 };
但是请注意,复合文字将具有局部范围。如果希望在局部作用域的末尾使用这些数据,则必须使用指向静态或动态分配的变量的指针。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句