Цитата(=GM= @ Dec 6 2006, 16:21)

Из двух предложенных я бы предпочел второй способ, не надо адрес вычислять, а в первом надо брать смещение, добавлять к индексу, проверять рамки...много возни.
Более того, если используется несколько вызовов подряд, например
Код
extern DATA data[];
/ **/
DATA *ptr = data+i;
foo(ptr);
if (isTRANSPARENT(mode)) bar(ptr);
if (isREPLY(mode)) doReply(ptr);
ptr->callBack(ptr);
то и адрес по индексу вычисляется один раз.
Цитата
Но есть еще третий путь, самый быстрый - использовать DP-адресацию. Сам пользую, очень удобно.
А это что за зверь?!
Цитата
А структура, имхо, сама по себе будет потреблять немного ресурсов, в смысле, чтобы добраться до элемента структуры.
Эт' как сказать. Один мой знакомый компилятор :-) транслирует выражение вроде ptr->subStruct->subField[i]++; в долгое вычисление адреса нужного слова, загружает его в регистр, прибавляет единицу... после чего снова вычисляет адрес - куда положить!!! Явное использование промежуточных указателей дало существенный прирост на таких, казалось бы простых, операциях...