Привіт і ласкаво просимо назад.
У цьому розділі ми розглянемо структури даних.
У цій лекції я познайомлю вас зі структурами даних.
Що таке структури, також відомі як структури даних?
Припустимо, вам потрібно зберегти в пам'яті координату (6,3), і це приклад системи координат,
де є вісь Y і вісь X, а також точка (6,3), а також пряма, яка виходить з початку координат і перетинає
точку (6,3).
Отже, це те, що ми вивчали в школі, і ми досить добре знайомі з цією системою координат.
Якщо ви хочете зберігати координати в пам'яті, типовий спосіб зробити це - створити структури
даних.
Отже, один з прикладів структури даних може виглядати так.
Ми будемо використовувати мову C для оголошення структур даних, і це приклад структури даних у вигляді точки.
Ми використовуємо ключове слово struct, а потім використовуємо
ім'я, наприклад, "point", щоб позначити назву структури. А всередині нього ми оголошуємо члени структури
даних struct point.
Отже, у нас є координати X і Y, і для кожної з них ми оголошуємо змінну для члена.
Першим членом буде X-координата, і це ціла змінна X.
Другим членом буде Y-координата, і це буде ціле число Y.
І після того, як ми оголосили цю структуру, ми можемо використовувати її в основній програмі, включивши
в неї структуру точки.
У нас є пункт директиви include. h.
Цей файл є точковим. h, що декларує саму структуру.
А потім, коли ми включимо структуру в основну програму, ми зможемо використовувати її наступним чином.
Спочатку ми створюємо екземпляр структури, використовуючи такий синтаксис: struct point, а потім присвоюємо змінній ім'я
point.
Отже, відтепер ми маємо новий об'єкт під назвою точка типу struct point.
Тоді ми можемо використовувати його в програмі наступним чином.
Ми можемо ініціалізувати його за допомогою крапкової нотації.
Припустимо, що у нас є точка (6,3), яку ми хочемо зберегти, ми
зробимо це таким чином.
Ми використовуємо крапкову нотацію.
Очко. x будемо називати
першим членом.
Тож показуй. x, ми можемо присвоїти йому
значення шість, маючи на увазі координату X. І точка. y, ми присвоїмо йому значення
три.
Отже, з цього моменту ми вже маємо точкову структуру, яка зберігає значення шість і три.
Отже, ось як ми можемо використовувати його в програмі на C.
Однак, всередині пам'яті, пам'ять не має структури, яка могла б показати вам, що це структура. У пам'яті він буде просто викладений на
площині
наступним чином.
Припустимо, що ми збережемо значення шість у цій комірці пам'яті за адресою 403060, тоді три буде збережено у наступній
комірці пам'яті, яка знаходиться за чотири байти від неї, тобто за адресою 403064.
Отже, що б це не було, коли ви зберігаєте структуру в пам'яті, вона буде викладена пласко, і просто подивившись
на неї, ви не дізнаєтесь, що це структура.
Але концепція структури важлива для тих, хто хоче розуміти код.
Тож вони створять цю штуку для візуалізації пам'яті, і в цьому
корисність розуміння структур.
Це допомагає нам зрозуміти дані всередині самої пам'яті.
Тепер, якби ви використовували x64dbg, ось як це виглядало б всередині самої пам'яті.
Отже, якщо припустити, що у нас є структура за адресою пам'яті 403060, то перша X-координата буде зберігатися
у цьому місці, 403060, а потім друга змінна, яка є Y-координатою, буде зберігатися за цією адресою пам'яті,
яка є 403064.
Отже, як ви бачите, кожне ціле число займає чотири байти, або DWORD (чотири), і тут ви бачите, що воно записане у форматі
little-endian, а старший біт знаходиться праворуч, тобто у зворотному
порядку.
А потім, якщо ви хочете візуалізувати це в осмислений спосіб, ви можете створити таку структуру всередині
x64dbg, а потім використовувати її для перегляду цієї ділянки пам'яті як структуру.
Отже, в наступному відео я покажу вам, як створити цю структуру всередині
x64dbg, щоб ви могли переглядати область пам'яті як структуру.
Проте з самої пам'яті, просто подивившись на неї, ви не зрозумієте,
що це структура, але ми створюємо цю штучну конструкцію для того, щоб надати сенсу цим числам тут.
На цьому ми завершуємо нашу лекцію.
До зустрічі в наступному випуску.
Дякуємо за перегляд.