Зачем писать ключевое слово struct в объявлении указателя?
struct bal {
float balance;
char name[80];
} person;
struct bal *p=&person;
Зачем писать ключевое слово struct? Почему нельзя написать:
bal *p=&person;
Ведь мы создали и определили отдельный тип bal.
Я понимаю, что у меня каша в голове, но разъясните, пожалуйста, как есть.
Ответы (1 шт):
Автор решения: αλεχολυτ
→ Ссылка
В большинстве случаев писать struct или class перед типом определяемой переменной не требуется. В Си явное написание struct является необходимым, в C++ можно этим воспользоваться, но обязательного требования нет.
Есть, например, такое исключение. Когда имя класса совпадает с именем функции, то при объявлении объекта нужно указывать ключевое слово struct (или class):
struct F {};
void F() {}
int main() {
F f; // ошибка
struct F f; // ok
}
Ещё один вариант, если мы совмещаем предварительное объявление класса с определением переменной:
struct F* f1; // т.к. F ещё не объявлен, то нужно добавить struct (или class)
F* f2; // ошибка
struct F {}; // ниже этого объявления struct уже не является обязательным
F* f3; // ok
struct F* f4; // тоже ok
int main() { }