NosovDI 2 лет назад
Родитель 193cab7c1f
Сommit 806f9d52a5

@ -0,0 +1,131 @@
#include <iostream>
#include <cstddef>
using namespace std;
void print_in_hex(uint8_t byte)
{
printf("%02X ", byte);
}
void print_in_hex(const void* data, size_t size)
{
const uint8_t* bytes = (const uint8_t*)data;
for (size_t i = 0; i < size; i++)
{
print_in_hex(bytes[i]);
if ((i + 1) % 8 == 0)
printf("\n");
}
printf("\n");
}
void print_in_binary(uint8_t byte)
{
for (int i = 7; i >= 0; i--)
{
printf("%d", (byte >> i) & 1);
if (i % 8 == 0)
printf(" ");
}
}
void print_in_binary(const void* data, size_t size)
{
const uint8_t* bytes = (const uint8_t*)data;
for (size_t i = 0; i < size; ++i)
{
print_in_binary(bytes[i]);
if ((i + 1) % 8 == 0)
printf("\n");
}
}
#pragma pack(1)
// Ñòðóêòóðà ñòóäåíòà
struct Student
{
// Èìÿ
char _name[17];
// ãîä ïîñòóïëåíèÿ
uint16_t _year;
// ñðåäíèé áàëë
float _averageGrade;
// ïîë (0 — æåíñêèé, 1 — ìóæñêîé)
uint8_t _gender : 1;
// êîëè÷åñòâî ïðîéäåííûõ êóðñîâ
uint8_t _numCourses : 7;
// óêàçàòåëü íà ñòàðîñòó ãðóïïû
Student* _leader;
};
#pragma pack()
int main()
{
setlocale(LC_ALL, "Russian");
Student students[3] = {0};
// Çàïîëíåíèå äàííûõ äëÿ ñòàðîñòû
strcpy(students[0]._name, "Îëüãà");
students[0]._year = 2020;
students[0]._averageGrade = 4.9f;
students[0]._gender = 0;
students[0]._numCourses = 7;
students[0]._leader = nullptr;
// Çàïîëíåíèå äàííûõ äëÿ âòîðîãî ñòóäåíòà
strcpy(students[1]._name, "Èâàí");
students[1]._year = 2020;
students[1]._averageGrade = 4.5f;
students[1]._gender = 1;
students[1]._numCourses = 5;
students[1]._leader = &students[0];
// Çàïîëíåíèå äàííûõ äëÿ òðåòüåãî ñòóäåíòà
strcpy(students[2]._name, "Äàíèë");
students[2]._year = 2021;
students[2]._averageGrade = 4.8f;
students[2]._gender = 1;
students[2]._numCourses = 6;
students[2]._leader = &students[0];
// Âûâîä àäðåñà è ðàçìåðà ìàññèâà
cout << "Àäðåñ ìàññèâà: " << &students << endl;
cout << "Ðàçìåð ìàññèâà: " << sizeof(students) << " áàéò" << endl;
// Âûâîä àäðåñîâ è ðàçìåðîâ âñåõ ýëåìåíòîâ ìàññèâà
for (int i = 0; i < 3; i++)
{
cout << "Àäðåñ ýëåìåíòà " << i << ": " << &students[i] << endl;
cout << "Ðàçìåð ýëåìåíòà " << i << ": " << sizeof(students[i]) << " áàéò" << endl;
}
// Âûâîä èíôîðìàöèè î ïîëÿõ îäíîãî èç ýëåìåíòîâ ìàññèâà (íå ñòàðîñòû)
int index = 1;
Student& student = students[index];
cout << "Èíôîðìàöèÿ î ñòóäåíòå " << index << ":" << endl;
cout << "Çíà÷åíèå ïîëÿ _name: " << student._name << endl;
cout << "Àäðåñ ïîëÿ _name: " << &(student._name) << endl;
cout << "Ñìåùåíèå ïîëÿ _name îò íà÷àëà ñòðóêòóðû: " << offsetof(Student, _name) << " áàéò" << endl;
cout << "Ðàçìåð ïîëÿ _name: " << sizeof(student._name) << " áàéò" << endl;
cout << "Øåñòíàäöàòåðè÷íîå ïðåäñòàâëåíèå ïîëÿ _name:" << endl;
print_in_hex(student._name, sizeof(student._name));
cout << "Äâîè÷íîå ïðåäñòàâëåíèå ïîëÿ _name:" << endl;
print_in_binary(student._name, sizeof(student._name));
cout << endl;
cout << "Ýëåìåíòû ìàññèâà â øåñòíàäöàòåðè÷íîì âèäå:" << endl;
cout << "(Ïåðâûå " << sizeof(student._name) << " áàéò - ïîëå _name):" << endl;
cout << "(Äàëåå " << sizeof(student._year) << " áàéòà - ïîëå _year):" << endl;
cout << "(Äàëåå " << sizeof(student._averageGrade) << " áàéòà - ïîëå _averageGrade):" << endl;
cout << "(Äàëåå " << sizeof(uint8_t) << " áàéòà - 1 áèò äëÿ _gender è 7 áèò äëÿ _numCourses):" << endl;
cout << "(Äàëåå " << sizeof(student._leader) << " áàéòà - ïîëå _leader):" << endl;
for (int i = 0; i < 3; i++)
{
cout << "Ñòóäåíò ñ èíäåêñîì " << i << endl;
print_in_hex(&students[i], sizeof(students[i]));
}
system("pause");
return 0;
}
Загрузка…
Отмена
Сохранить