Я новичок в программировании на C и только что узнал о структурах. Мой вопрос в том, какой смысл ставить указатели после определения структуры? как в этом примере (это мой старший код, кстати):
struct lecturer {
char Lecturer_ID[40];
char Lecturer_Passport[40];
char Lecturer_Name[40];
char Lecturer_Password[40];
struct lecturer *next;
} *start, *curr;
Дело в том, что вы просто объявляете два указателя на тип struct lecturer с именами start и curr. Вы можете удалить их там (что является хорошей идеей - вам не нужны глобальные объявления (предположительно), а затем объявить struct lecturer *start, *curr; в main().
Хотя Гиллесс предположил весьма правдоподобно, почему вы не спросите автора этого кода или не прочитаете документацию по нему? (Я надеюсь, что «это мой старший код» не означает, что вы являетесь автором кода, которого сами не понимаете; не говоря уже о попытках получить с его помощью какую-либо степень ...)





Это связано с темой «Связанный список».
Представьте, что у вас есть неизвестное количество лекторов, которых вам будут читать во время выполнения. Таким образом, вам придется динамически выделять место в памяти каждый раз, когда потребуется обработать новую запись лектора.
В этом случае вы будете использовать указатель «следующий» для создания связи между этими же типами структурированных данных.
Тем не менее, вы можете найти много более подробных (и лучших) объяснений на этом сайте, на YouTube и т. д. Просто выполните поиск по «Связанному списку».
Опубликованный вами код определяет как тип struct lecturer, так и две переменные start и curr с указателем типа на struct lecturer. Для ясности это можно было бы записать как отдельные определения:
struct lecturer {
char Lecturer_ID[40];
char Lecturer_Passport[40];
char Lecturer_Name[40];
char Lecturer_Password[40];
struct lecturer *next;
};
struct lecturer *start;
struct lecturer *curr;
Комбинированное определение требуется, если struct не помечен и не определен через typedef.
который обычно используется для реализации en.wikipedia.org/wiki/Linked_list