Родитель
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;
|
||||
}
|
Загрузка…
Ссылка в новой задаче