У меня довольно простая структура const в некотором C-коде, который просто содержит несколько указателей и хотел бы инициализировать ее статически, если это возможно. Могу ли я, и если да, то как?
Возможно ли инициализировать структуру const без использования функции?
Ответ 1
Вы можете, если указатели указывают на глобальные объекты:
// In global scope
int x, y;
const struct {int *px, *py; } s = {&x, &y};
Ответ 2
const struct mytype foo = {&var1, &var2};
Ответ 3
Структуру const можно инициализировать только статически.
Ответ 4
Но если есть 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