тупо как из массива, то есть берём адрес начала массива, задаём индекс, который считается смещением от начала и уже по этому адресу (начало+смещение) берём нужные даные?
В делфи такое не прокатит и нужно делать через указатели, типа указатель на начало, прибавляем к нему смещение (так вообще можно?) и берём данные которые лежат там, куда указывает то, что получилось?
индексация в си работает так же, как в паскале
По определению в Си массив и указатель - одно и то же. "массивные" скобки - это просто сахарок для pointer math. Pointer math завезли ЕМНИП в Delphi 2009 То, есть, переводя на дельфу, это {$pointermath on} ( (Data + CurrentPtr)^ shr 5) and 7
здесь дата объявляется как массив интов?
Word'oв SHORT int
я только не особо понимаю с размерами. В сях ведь можно читать писать в любом месте массива, хоть за его пределами, пиши любой индекс и читай всю память. В делфи ведь читать можно лишь только внутри массива, верно?
Определи слово "можно" {$B-} и стреляй себе во все ноги, хоть две, хоть двадцать две
Вернее не $B (это boolean short cuicuit), а какой-то другой, который boundary check
...то будет вот так
Оно в принципе без установки размера считывает любые индексы, так что можно как в сях читать
Зависит от директива, включи в свойствах проекта boundary checking и ой
И на твоём скриншот нет чтения за формальным пределами массива, ни меньше 0 ни больше 8
Заметь, что кончается нечетным А вообще это та самая фигня выше из high(integer) div sizeof( Data~type ) - 1
Обсуждают сегодня