UpakNet CSyntax_V2.1
Руководство пользователя
×

Указатели

В отличие от статических переменных, помеченных ключевым словом static, вы так же можете использовать ключевое слово pointer, что сделает переменную указателем.
В отличие от статической переменной, которая хранит какое-то полезное значение типа "0" или "42" (и это значение хранится в отдельной области памяти, размеры которой неизменны и определены заранее), указатель хранит адрес памяти, где это полезное значение лежит.
Таким образом, указатель не хранит в себе какое -либо значение, он указывает на область оперативной памяти контроллера, в которой лежит какое-либо значение.
 
Создадим указатель:
pointer int somePointer;
 
После своего создания, в отличие от переменных типа static, указатель всё ещё нельзя использовать, т.к. при создании все такие переменные указывают на адрес 0, поэтому данную переменную необходимо обязательно инициализироватьначальным значением, иначе возможны критические ошибки при выполнении работы пользовательской программы.
 
Для проведения инициализации используется ключевое слово new. Это ключевое слово выделет необходимый размер области памяти, зависящий от типа данных (в примере выше это int) и выдаст указателю адрес.
 
Теперь наш пример выглядит так:
pointer int somePointer;              #Создание указателя int
somePointer = new;                            #Инициализация указателя
 
Так как регисты в памяти контроллера лежат вне выделенной памяти, для них существует отдельный указатель при инициализации - regs.
Суть процедуры инициализации при этом не меняется:
 
pointer int pRegs;           #Создание указателя reg int
pRegs = regs;                #Инициализация указателя
 
Какие задачи позволяют решать указатели?
В основном, главной задачей указателей является работа с памятью и массивами данных внутри контроллера.
 
 
 
Онлайн помощь создана в Dr.Explain