getarg
Материал из Pro-Pawn Wiki
Описание:
Получает значение аргумента, полученного по ссылке (в том числе через переменное число аргументов).
Параметры:
(arg, index=0) |
arg | Индекс аргумента (нумерация начинается с 0). |
index | Индекс элемента, если указанный аргумент является массивом (иначе параметр можно пропустить). |
Возвращаемое значение:
Значение аргумента по указанному индексу.
Баг Pawn |
Функция не проверяет валидность индекса аргумента и адреса ссылки на аргумент, из-за чего возможно чтение данных за пределами секции данных скрипта и падение сервера. |
Пример использования:
PrintValues(...)
{
new n = numargs();
printf("Количество аргументов: %d", n);
// Выведем значения всех аргументов функции.
for (new i = 0; i < n; ++i)
{
// Обратите внимание: в вызове getarg() параметр index пропущен.
printf(" %d", getarg(i));
}
}
PrintArray(a[], size = sizeof(a))
{
printf("Размер массива: %d", size);
// Выведем все элементы массива.
for (new i = 0; i < size; ++i)
{
// То же самое, что и "printf(" %d", a[i]);".
// На этот раз мы работаем с массивом, поэтому параметр index нужно указывать.
printf(" %d", getarg(0, i));
}
}
main()
{
// Вывод:
// Количество аргументов: 3
// 1
// 3
// 5
// Размер массива: 3
// 1
// 3
// 5
new arr[] = { 1, 3, 5 };
PrintValues(arr[0], arr[1], arr[2]);
PrintArray(arr);
}
{
new n = numargs();
printf("Количество аргументов: %d", n);
// Выведем значения всех аргументов функции.
for (new i = 0; i < n; ++i)
{
// Обратите внимание: в вызове getarg() параметр index пропущен.
printf(" %d", getarg(i));
}
}
PrintArray(a[], size = sizeof(a))
{
printf("Размер массива: %d", size);
// Выведем все элементы массива.
for (new i = 0; i < size; ++i)
{
// То же самое, что и "printf(" %d", a[i]);".
// На этот раз мы работаем с массивом, поэтому параметр index нужно указывать.
printf(" %d", getarg(0, i));
}
}
main()
{
// Вывод:
// Количество аргументов: 3
// 1
// 3
// 5
// Размер массива: 3
// 1
// 3
// 5
new arr[] = { 1, 3, 5 };
PrintValues(arr[0], arr[1], arr[2]);
PrintArray(arr);
}
См. также: