Что означает const struct
? Отличается ли оно от struct
?
Как структура "const" отличается от "структуры"?
Ответ 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), и переменные идентификаторы, которые хранится в регистре, не может быть изменено