gpt4 book ai didi

c - 堆上的 C 结构是否有单行初始化?

转载 作者:太空狗 更新时间:2023-10-29 15:58:15 24 4
gpt4 key购买 nike

在C语言中,我们可以通过以下方式在栈上初始化一个struct

struct Foo {
int bar;
int bar2;
};


int main(){
struct Foo myFoo = {
.bar = 1,
.bar2 = 2
};
}

但是,当我在中尝试这种东西时,编译器拒绝了它。

struct Foo* myFooPtr = malloc(sizeof(struct Foo));
*myFooPtr = {
.bar = 1,
.bar2 = 2
}

编译器错误:

error: expected expression before ‘{’ token
*myFooPtr = {

有没有办法在堆上实现某种初始化?

最佳答案

是的:

struct Foo *myFooPtr = malloc(sizeof(struct Foo));
*myFooPtr = (struct Foo) {
.bar = 1,
.bar2 = 2
};

(虽然形式上这是一个匿名复合文字对象的初始化,然后是对堆对象的赋值,而不是直接初始化)。

关于c - 堆上的 C 结构是否有单行初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22547381/

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