#include #include #include #include using namespace std; struct Student { char name[17]; uint16_t admissionYear; float averageGrade; bool isMale : 1; uint8_t completedCourses; Student* groupLeader; }; int main() { const int numberOfStudents = 3; Student students[numberOfStudents]; students[0].admissionYear = 2023; students[0].averageGrade = 4.5; students[0].isMale = true; students[0].completedCourses = 5; students[0].groupLeader = nullptr; students[1].admissionYear = 2022; students[1].averageGrade = 3.8; students[1].isMale = false; students[1].completedCourses = 6; students[1].groupLeader = &students[0]; students[2].admissionYear = 2021; students[2].averageGrade = 3.2; students[2].isMale = true; students[2].completedCourses = 7; students[2].groupLeader = nullptr; for (int i = 0; i < numberOfStudents; ++i) { cout << "\nИнформация о студенте " << i + 1 << ":\n"; cout << "Адрес поля admissionYear: " << static_cast(&students[i].admissionYear) << ", Смещение: " << offsetof(Student, admissionYear) << ", Размер: " << sizeof(students[i].admissionYear) << " байт, " << "Шестнадцатеричное: " << hex << students[i].admissionYear << ", Двоичное: " << bitset<16>(students[i].admissionYear) << '\n'; cout << "Адрес поля averageGrade: " << static_cast(&students[i].averageGrade) << ", Смещение: " << offsetof(Student, averageGrade) << ", Размер: " << sizeof(students[i].averageGrade) << " байт, " << "Значение: " << students[i].averageGrade << '\n'; cout << "Адрес и битовое поле isMale: " << static_cast(&students[i].isMale) << ", Смещение: " << offsetof(Student, isMale) << ", Размер: " << sizeof(students[i].isMale) << " бит, " << "Значение: " << (students[i].isMale ? "мужской" : "женский") << '\n'; cout << "Адрес поля completedCourses: " << static_cast(&students[i].completedCourses) << ", Смещение: " << offsetof(Student, completedCourses) << ", Размер: " << sizeof(students[i].completedCourses) << " байт, " << "Значение: " << static_cast(students[i].completedCourses) << '\n'; cout << "Адрес поля groupLeader: " << static_cast(&students[i].groupLeader) << ", Смещение: " << offsetof(Student, groupLeader) << ", Размер: " << sizeof(students[i].groupLeader) << " байт, " << "Шестнадцатеричное: " << hex << reinterpret_cast(students[i].groupLeader) << '\n'; // Выводим представление структуры в памяти cout << "Представление в памяти (в шестнадцатеричной системе):\n"; const uint8_t* bytes = reinterpret_cast(&students[i]); for (size_t j = 0; j < sizeof(Student); ++j) { cout << hex << setfill('0') << setw(2) << static_cast(bytes[j]) << ' '; } cout << '\n'; } return 0; }