我在一些C代码中有一个相当简单的const结构,它只包含几个指针,并希望在可能的情况下静态初始化它。我可以,如果是,如何?
答案 0 :(得分:15)
如果指针指向全局对象,则可以:
// In global scope
int x, y;
const struct {int *px, *py; } s = {&x, &y};
答案 1 :(得分:5)
const struct mytype foo = {&var1, &var2};
答案 2 :(得分:1)
const结构只能 静态初始化。
答案 3 :(得分:0)
但如果有struct
如下:
struct Foo
{
const int a;
int b;
};
我们希望使用struct
动态创建指向malloc
的指针,因此我们可以发挥作用:
struct Foo foo = { 10, 20 };
char *ptr = (char*)malloc(sizeof(struct Foo));
memcpy(ptr, &foo, sizeof(foo));
struct Foo *pfoo = (struct Foo*)ptr;
这非常有用,尤其是当某些函数需要返回指向struct Foo