Чем отличается «const struct» от «struct»? - PullRequest
40 голосов
/ 24 ноября 2010

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

Ответы [ 6 ]

72 голосов
/ 24 ноября 2010

Часть 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
21 голосов
/ 24 ноября 2010

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

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

РЕДАКТИРОВАТЬ: GrahamS правильно указывает, что constness является свойством переменной, в данном случае 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
0 голосов
/ 27 апреля 2017

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

0 голосов
/ 24 ноября 2010

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

0 голосов
/ 24 ноября 2010

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

0 голосов
/ 24 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...