[Урок] char массивы
При использовании char мы устанавливаем границы каждой ячейки массива: от 0 и до 255.
Каждая ячейка может принимать 256 значений.
Все постигается в сравнении
Давайте создадим обычный массив.
PHP код:
new example_1[MAX_PLAYERS];
Тут мы используем 1000*4 байт, то есть 4000 байт.
Пояснение:
если заглянуть в a_samp.inc, то можно увидеть, что по стандарту максимальное количество MAX_PLAYERS равно 1000 (с выходом 0.3.7 клиента)
4 - количество байт, занимаемых целочисленным типом.
Давайте создадим массив типа char.
PHP код:
new example_2[MAX_PLAYERS char];
Вот она наша оптимизация. Здесь мы используем 1000/4*4 байт, то есть 1000 байт. Не плохо. Да?
Пояснение:
Каждая ячейка равна 4 байтам. Тип char лишь запаковывает округленный вверх результат деления числа, стоящего перед ним, на 4.
Пример использования
Чтобы обратиться к массиву типа char, мы используем не квадратные скобочки, а фигурные.
PHP код:
// создаем
new example_2[MAX_PLAYERS char];
// обращаемся к нему
example_2{playerid}//...
Во всем остальном, массив типа char такой же как и обычный массив и использование его точно такое же.
PHP код:
// обратимся к конкретному игроку с ID 123
example_2{123}//...
Не знаю, нужно ли вам показывать вызов массива, но может кому-нибудь и будет интересно.
PHP код:
new no_char_[MAX_PLAYERS];
// будет вызван no_char_[1000];
Помните, что массивы типа char можно не везде использовать и нужно их использовать правильно.
PHP код:
// ничего у вас не получится!
enum enum_example
{
//..
};
new example_3[MAX_PLAYERS char][enum_example];
PHP код:
new array_char[MAX_PLAYERS char];
array_char{playerid} = INVALID_PLAYER_ID; // воу, полугче
Я не понял как это 256 значений
Мы объявляем массив, в котором будут записаны: буквы в различных регистрах, цифры и символы.
PHP код:
new example_4[6] = "Darge";
Или
PHP код:
new example_5[6] = {'D', 'a', 'r', 'g', 'e', '\0'};
Вот как это выглядит наглядно (что мы подразумеваем)
example_5
Таблица значений
Еще один момент
PHP код:
// Не правильно!
// Почему?
// Смотри самый верх темы!
example{playerid} = 256;
// Правильно
example{playerid} = 255;
Все возможные принимаемые значения в приведенной таблице (см. выше)
Автор урока: Darge