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

Как структура "const" отличается от "структуры"?

Что означает const struct? Отличается ли оно от struct?

4b9b3361

Ответ 1

Часть const действительно относится к переменной, а не к самой структуре.

например. @Andreas правильно говорит:

const struct {
    int x;
    int y;
} foo = {10, 20};
foo.x = 5; //Error

Но важно то, что переменная foo является константой, а не самим определением struct. Вы также можете написать это как:

struct apoint {
    int x;
    int y;
};

const struct apoint foo = {10, 20};
foo.x = 5; // Error

struct apoint bar = {10, 20};
bar.x = 5; // Okay

Ответ 2

Это означает, что struct является константой, то есть вы не можете редактировать его после инициализации.

const struct {
    int x;
    int y;
} foo = {10, 20};
foo.x = 5; //Error

EDIT: GrahamS правильно указывает, что константа является свойством переменной, в данном случае foo, а не определение структуры:

struct Foo {
    int x;
    int y;
};
const struct Foo foo = {10, 20};
foo.x = 5; //Error
struct Foo baz = {10, 20};
baz.x = 5; //Ok

Ответ 3

Const означает, что вы не можете редактировать поле структуры после объявления и инициализации и можете извлечь данные из структуры

Ответ 4

'const', поскольку само константа слова означает, что оно немодифицируется. Это может быть применено к переменной любого типа данных. struct является определяемым пользователем типом данных, он также применяется к переменным любой структуры. После инициализации значение константных переменных не может быть изменено.

Ответ 5

Я считаю, что структуру const нельзя изменить. Другими словами, все поля структуры, объявленной const, не изменяются.

Ответ 6

вы не можете изменить константу struct, первая структура - это простой тип данных, поэтому, когда происходит ключевое слово const, компилятор будет хранить пространство памяти в регистре, а не временное хранилище (например, ram), и переменные идентификаторы, которые хранится в регистре, не может быть изменено