gpt4 book ai didi

c - 使用字段元素初始化指向结构的指针

转载 作者:行者123 更新时间:2023-12-05 09:29:19 24 4
gpt4 key购买 nike

我想知道在 C 中是否可以通过以下方式初始化结构:

struct Test* test = { .int_value = 10, .char_value = 'c', .pointer_to_float_value = (float*)1.512 };

如果我尝试使用以某种方式定义的结构来执行此操作:

struct Test
{
int int_value;
char char_value;
float* pointer_to_float_value;
};

我得到结构的所有元素的错误:

error: field name not in record or union initializer

有没有办法绕过这个问题?

最佳答案

这种语法

struct Test* test { .int_value = 10, .char_value = 'c', .pointer_to_float_value = (float*)1.512 };

无效。

相反,您可以使用复合文字作为示例

float f = 1.512f;
struct Test* test = &( struct Test ){ .int_value = 10, .char_value = 'c', .pointer_to_float_value = &f };

来自 C 标准(6.5.2.5 复合文字)

5 The value of the compound literal is that of an unnamed objectinitialized by the initializer list. If the compound literal occursoutside the body of a function, the object has static storageduration; otherwise, it has automatic storage duration associated withthe enclosing block.

关于c - 使用字段元素初始化指向结构的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70738369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com