Значения по умолчанию для целых чисел в структуре - PullRequest
1 голос
/ 27 сентября 2011

Я не могу понять, как установить значение по умолчанию для целого числа в структуре. Например

 typedef struct {
        char breed[40];
        char coatColor[40];
        int maxAge = 20;
    } Cat;

Приведенный выше код выдает ошибку при выполнении - ожидается ';' в конце списка объявлений

Ответы [ 5 ]

8 голосов
/ 27 сентября 2011

Вы не можете указать значения по умолчанию в C. Что вы, вероятно, хотите, это функция стиля 'init', которую пользователи вашей структуры должны вызывать в первую очередь:

struct Cat c;
Cat_init(&c);

// etc.
7 голосов
/ 27 сентября 2011

В C вы не можете дать значения по умолчанию в структуре.Этот синтаксис просто не существует.

2 голосов
/ 27 сентября 2011

Вкратце, вы не можете. Это просто не особенность C.

0 голосов
/ 27 сентября 2011

вы можете инициализировать, но это непрактично со строками (лучше использовать ваши пользовательские функции)

typedef struct {
        char breed[40];
        char coatColor[40];
        int maxAge; 
} Cat;

Cat c = {"here39characters40404040404044040404040",
         "here39characters40404040404044040404040",
          19
};
0 голосов
/ 27 сентября 2011

Структура - это тип.Типы (все типы) не имеют значений по умолчанию.

// THIS DOES NOT WORK
typedef char = 'R' chardefault;
chardefault ch; // ch contains 'R'?

Вы можете назначать значения объектам при инициализации

char ch = 'R'; // OK
struct whatever obj = {0}; // assign `0` (of the correct type) to all members of struct whatever, recursively if needed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...