Структурированный текст - указатель таблицы разыменования со смещением

Что касается языка программирования структурированного текста:

Если у меня есть указатель на таблицу:

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^;
Другие вопросы по тегам