16.06.2010, 16:02
Quote:
Originally Posted by Fro1sha
Quote:
![]() |
- char это оператор, который возвращает кол-во ячеек, необходимое для хранения указанного кол-ва байт, которое указано перед этим оператором.
- char возвращает константное значение
- синтаксис: [кол-во байт] char
- примеры: 500 char, 47 char
- смысл возвращаемых значений: 500 char это 125, 47 char это 12
- механизм подсчета: 500 char это 500/4, 47 char это 47/4 + 1 (т.к. для хранения 47 байт недостаточно 11 pawn ячеек)
- если с помощью этого оператора указанно кол-во элементов в определении массива, то к элементам этого массива можно обращаться не только как к ячейкам ( [] скобки ), но также и как к байтам ( {} скобки )
Область применения:
- Массивы, значения ячеек которых лежат в диапазоне 0..255. Обычно, это массивы флагов в sa-mp.
- Для хранения упакованных строк. Редко используется в sa-mp. Но в моем Power INI используется для уменьшения данных в стэке.
Примеры:
- Массив флагов:
stock isPlayerLogged [ 500 char ]; // в памяти будет выделено не 2000 байт как обычно, а всего 500 байт
if ( isPlayerLogged{playerid} ) // ...
isPlayerLogged{playerid} = 1;
- Упакованные строки:
stock packedStr [ 128 char ] = !"Cтрока, в которой символ занимает не 4 байта, а всего 1";
// ! - означает, что указана упакованная строка, а не обычная
printf( "%c", packedStr{6} ); // напечатает символ ',' (запятая)