Структурированный текст - указатель таблицы разыменования со смещением
Что касается языка программирования структурированного текста:
Если у меня есть указатель на таблицу:
crcTable : ARRAY [0..255] OF WORD;
pcrcTable : POINTER TO WORD;
pcrcTable := ADR(crcTable);
и я хочу разыменовать таблицу по определенному индексу, каков синтаксис для этого? Я думаю, что эквивалентный код C будет:
unsigned short crcTable[256];
unsigned short* pcrcTable = &crcTable[0];
dereferencedVal = pcrcTable[50]; //Grab table value at index = 50
1 ответ
Вы должны сначала переместить указатель в соответствии с индексом массива, к которому вы хотите добраться. А затем сделать разыменование.
// Dereference index 0 (address of array)
pcrcTable := ADR(crcTable);
crcVal1 := pcrcTable^;
// Dereference index 3 (address of array and some pointer arithmetic)
pcrcTable := ADR(crcTable) + 3 * SIZEOF(pcrcTable^);
crcVal2 := pcrcTable^;
// Dereference next index (pointer arithmetic)
pcrcTable := pcrcTable + SIZEOF(pcrcTable^);
crcVal3 := pcrcTable^;