getarg

Материал из Pro-Pawn Wiki
Перейти к: навигация, поиск

Описание:

Получает значение аргумента, полученного по ссылке (в том числе через переменное число аргументов).

Параметры:

(arg, index=0)
arg Индекс аргумента (нумерация начинается с 0).
index Индекс элемента, если указанный аргумент является массивом (иначе параметр можно пропустить).


Возвращаемое значение:

Значение аргумента по указанному индексу.

Bug.png
Баг 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);
}


См. также: