new Player[500 char]; public OnPlayerConnect(playerid) { Player{playerid}=1 //Только данная переменная не может принимать значения более 255 return 1; }
Char
Сообщений 1 страница 2 из 2
Поделиться12011-11-26 11:08:28
Поделиться22011-11-26 11:13:57
Факты:
- 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} ); // напечатает символ ',' (запятая)