|
|
@ -46,23 +46,24 @@ int main() {
|
|
|
|
strcpy(students[0].name, "Александр ");
|
|
|
|
strcpy(students[0].name, "Александр ");
|
|
|
|
students[0].year = 2019;
|
|
|
|
students[0].year = 2019;
|
|
|
|
students[0].average_score = 4.2;
|
|
|
|
students[0].average_score = 4.2;
|
|
|
|
students[0].gender = 1;
|
|
|
|
|
|
|
|
students[0].courses = 6;
|
|
|
|
students[0].courses = 6;
|
|
|
|
students[0].leader = nullptr;
|
|
|
|
students[0].gender = 1;
|
|
|
|
|
|
|
|
students[0].leader = &students[0];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
strcpy(students[1].name, "Алексей");
|
|
|
|
strcpy(students[1].name, "Алексей");
|
|
|
|
students[1].year = 2022;
|
|
|
|
students[1].year = 2022;
|
|
|
|
students[1].average_score = 3.5;
|
|
|
|
students[1].average_score = 3.5;
|
|
|
|
students[1].gender = 1;
|
|
|
|
students[1].gender = 1;
|
|
|
|
students[1].courses = 3;
|
|
|
|
students[1].courses = 3;
|
|
|
|
students[1].leader = &students[0];
|
|
|
|
students[1].leader = nullptr;
|
|
|
|
|
|
|
|
|
|
|
|
strcpy(students[2].name, "Екатерина");
|
|
|
|
strcpy(students[2].name, "Екатерина");
|
|
|
|
students[2].year = 2021;
|
|
|
|
students[2].year = 2021;
|
|
|
|
students[2].average_score = 4.1;
|
|
|
|
students[2].average_score = 4.1;
|
|
|
|
students[2].gender = 0;
|
|
|
|
students[2].gender = 0;
|
|
|
|
students[2].courses = 4;
|
|
|
|
students[2].courses = 4;
|
|
|
|
students[2].leader = &students[0];
|
|
|
|
students[2].leader = nullptr;
|
|
|
|
|
|
|
|
|
|
|
|
// Выводим адрес массива и размер массива в байтах
|
|
|
|
// Выводим адрес массива и размер массива в байтах
|
|
|
|
cout << "Информация о массиве:" << endl;
|
|
|
|
cout << "Информация о массиве:" << endl;
|
|
|
@ -77,10 +78,10 @@ int main() {
|
|
|
|
cout << "Размер: " << sizeof(Student) << " байт" << endl << endl;
|
|
|
|
cout << "Размер: " << sizeof(Student) << " байт" << endl << endl;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
cout << "Данные о полях других студентов:" << endl;
|
|
|
|
cout << "Данные о полях студентов:" << endl;
|
|
|
|
|
|
|
|
|
|
|
|
// Выводим смещение поля имени относительно начала структуры
|
|
|
|
// Выводим смещение поля имени относительно начала структуры
|
|
|
|
cout << "Имя:" << endl;
|
|
|
|
cout << "Имя студента:" << endl;
|
|
|
|
cout << " Адрес: " << static_cast<void*>(students[1].name) << endl;
|
|
|
|
cout << " Адрес: " << static_cast<void*>(students[1].name) << endl;
|
|
|
|
cout << " Смещение: " << offsetof(Student, name) << endl;
|
|
|
|
cout << " Смещение: " << offsetof(Student, name) << endl;
|
|
|
|
cout << " Размер: " << sizeof(students[1].name) << " байт" << endl;
|
|
|
|
cout << " Размер: " << sizeof(students[1].name) << " байт" << endl;
|
|
|
@ -91,7 +92,7 @@ int main() {
|
|
|
|
cout << endl << endl;
|
|
|
|
cout << endl << endl;
|
|
|
|
|
|
|
|
|
|
|
|
// Выводим адрес, смещение, размер поля года
|
|
|
|
// Выводим адрес, смещение, размер поля года
|
|
|
|
cout << "Год:" << endl;
|
|
|
|
cout << "Год поступления:" << endl;
|
|
|
|
cout << " Адрес: " << &students[1].year << endl;
|
|
|
|
cout << " Адрес: " << &students[1].year << endl;
|
|
|
|
cout << " Смещение: " << offsetof(Student, year) << endl;
|
|
|
|
cout << " Смещение: " << offsetof(Student, year) << endl;
|
|
|
|
cout << " Размер: " << sizeof(students[1].year) << " байт" << endl;
|
|
|
|
cout << " Размер: " << sizeof(students[1].year) << " байт" << endl;
|
|
|
@ -114,13 +115,13 @@ int main() {
|
|
|
|
|
|
|
|
|
|
|
|
// Выводим адрес, смещение, размер указателя на старосту
|
|
|
|
// Выводим адрес, смещение, размер указателя на старосту
|
|
|
|
cout << "Староста:" << endl;
|
|
|
|
cout << "Староста:" << endl;
|
|
|
|
cout << " Адрес: " << &students[1].leader << endl;
|
|
|
|
cout << " Адрес: " << &students[0].leader << endl;
|
|
|
|
cout << " Смещение: " << offsetof(Student, leader) << endl;
|
|
|
|
cout << " Смещение: " << offsetof(Student, leader) << endl;
|
|
|
|
cout << " Размер: " << sizeof(students[1].leader) << " байт" << endl;
|
|
|
|
cout << " Размер: " << sizeof(students[0].leader) << " байт" << endl;
|
|
|
|
cout << " Шестнацатеричный формат: ";
|
|
|
|
cout << " Шестнацатеричный формат: ";
|
|
|
|
students[1].print_hex(&students[1].leader, sizeof(students[1].leader));
|
|
|
|
students[1].print_hex(&students[0].leader, sizeof(students[0].leader));
|
|
|
|
cout << endl << " Двоичный формат: ";
|
|
|
|
cout << endl << " Двоичный формат: ";
|
|
|
|
students[1].print_binary(&students[1].leader, sizeof(students[1].leader));
|
|
|
|
students[1].print_binary(&students[0].leader, sizeof(students[0].leader));
|
|
|
|
cout << endl << endl;
|
|
|
|
cout << endl << endl;
|
|
|
|
|
|
|
|
|
|
|
|
// все элементы массива в шестнадцатеричном виде с указанием соответствия блоков байт полям структур
|
|
|
|
// все элементы массива в шестнадцатеричном виде с указанием соответствия блоков байт полям структур
|
|
|
@ -128,7 +129,7 @@ int main() {
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
|
|
cout << "Студент " << i << (students[i].leader == nullptr ? " (не староста)" : " (староста, лидер - ")
|
|
|
|
cout << "Студент " << i << (students[i].leader == nullptr ? " (не староста)" : " (староста, лидер - ")
|
|
|
|
<< (students[i].leader == nullptr ? "нет лидера" : students[i].leader->name) << ")" << endl;
|
|
|
|
<< (students[i].leader == nullptr ? "нет лидера" : students[i].leader->name) << ")" << endl;
|
|
|
|
cout << " Все поля: ";
|
|
|
|
cout << " Все поля:\n ";
|
|
|
|
students[i].print_hex(&students[i], sizeof(Student));
|
|
|
|
students[i].print_hex(&students[i], sizeof(Student));
|
|
|
|
cout << endl;
|
|
|
|
cout << endl;
|
|
|
|
cout << " Имя: ";
|
|
|
|
cout << " Имя: ";
|
|
|
|