Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок char массивы

Статус
В этой теме нельзя размещать новые ответы.

Darge

Умник

При использовании char мы устанавливаем границы каждой ячейки массива: от 0 и до 255.
Каждая ячейка может принимать 256 значений.

Все постигается в сравнении​

Давайте создадим обычный массив.

PHP:
new example_1[MAX_PLAYERS];
Тут мы используем 1000*4 байт, то есть 4000 байт.

[HR][/HR]Пояснение:
если заглянуть в a_samp.inc, то можно увидеть, что по стандарту максимальное количество MAX_PLAYERS равно 1000 (с выходом 0.3.7 клиента)
4 - количество байт, занимаемых целочисленным типом.
[HR][/HR]

Давайте создадим массив типа char.

PHP:
new example_2[MAX_PLAYERS char];
Вот она наша оптимизация. Здесь мы используем 1000/4*4 байт, то есть 1000 байт. Не плохо. Да?

[HR][/HR]Пояснение:
Каждая ячейка равна 4 байтам. Тип char лишь запаковывает округленный вверх результат деления числа, стоящего перед ним, на 4.
[HR][/HR]

Пример использования​

Чтобы обратиться к массиву типа 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'};
Вот как это выглядит наглядно (что мы подразумеваем)




Еще один момент

PHP:
// Не правильно!
// Почему? 
// Смотри самый верх темы!
example{playerid} = 256;

// Правильно
example{playerid} = 255;
Все возможные принимаемые значения в приведенной таблице (см. выше)

[HR][/HR]

Благодарю пользователя vladua100 за исправление ошибок в данной статье.

Автор урока: Darge​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу