Безопасно ли возвращать стринг таким способом?
stock GetVehicleModelName(model, name[], size = sizeof(name)) { if (!(400 < model < 611)) { return -1; } }
P.S. Видел в инклуде "zvehinfo" от ziggi
Безопасно ли возвращать стринг таким способом?
stock GetVehicleModelName(model, name[], size = sizeof(name)) { if (!(400 < model < 611)) { return -1; } }
P.S. Видел в инклуде "zvehinfo" от ziggi
Это всё равно что:
stock GetVehicleModelName(model, name[], size = sizeof(name)) { if (!(400 < model < 611)) { return -1; } return 1; }
Просто в случае реализации функции у ziggi, возвращает не просто 1, а длину распакованной строки.
Здесь же по сути ты в функцию передаешь массив, который заполняется данными.
Например, в этом варианте все элементы массива value станут равны 1:
stock OtherFunction() { new value[10]; for(new i; i < sizeof(value); i++) GetData(value); for(new i; i < sizeof(value); i++) return 1; } stock GetData(array[], size = sizeof(array)) { for(new i; i < size; i++) { array[i] = 1; } return 1; }
Последний раз редактировалось punkochel; 19.11.2020 в 12:29.
Строка которую ты используешь, она не создается заново, а передается ссылка в параметре name. Грубо говоря выходит так:
Так работают параметры массивы в pawn, но обычные переменные дублируются. Например в твоем параметре model если изменить значение, то оно заменится только в функции, а если изменить значение name, то изменится значение массива string.PHP код:
new string[32]; // - Вот ты создал массив(строку)
GetVehicleModelName(562, string);
stock GetVehicleModelName(model, name[], size = sizeof(name)) // - И тут в параметре "name" ссылка на массив "string"
{
if (!(400 < model < 611)) {
return -1;
}
return strunpack(name, gVehicleInfo[model - 400][e_zviName], size);
}
И если что ты возвращаешь через return не массив, а количество символов.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)