Подтвердить что ты не робот

Возможно ли инициализировать структуру const без использования функции?

У меня довольно простая структура const в некотором C-коде, который просто содержит несколько указателей и хотел бы инициализировать ее статически, если это возможно. Могу ли я, и если да, то как?

4b9b3361

Ответ 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