| AngelScript | C++ | Size (bits) |
| void | void | 0 |
| int8 | signed char | 8 |
| int16 | signed short | 16 |
| int | signed long (*) | 32 |
| int64 | signed long long | 64 |
| uint8 | unsigned char | 8 |
| uint16 | unsigned short | 16 |
| uint | unsigned long (*) | 32 |
| uint64 | unsigned long long | 64 |
| float | float | 32 |
| double | double | 64 |
| bool | bool | 8 (**) |
*) На 32 битной платформе, тип long (С++) также 32 битный, но на 64 битной он обычно 64 битный, но в AngelScript он всегда 32 битный.
**) На 32 битных платформах PowerPC, тип bool обычно имеет размер 32 бит, поэтому на данной платформе AngelScript также использует 32 бита для bool.
Также можно переопределить встроенный обьект массив своим обьектом, специализированным под определенные типы обьектов.
Когда AngelScript передает хендл по значению в функцию, увеличивается счетчик ссылок, таким образом функция отвечает за уменьшение счетчика когда она закончила работать с обьектом.
Однако, при регистрации функций\методов AngelScript может автоматически управлять счетчиком ссылок. Для этого следует добавить знак + к @. Теперь хендл может быть безопасно передан в функцию C++, которая работает с обычным указателем, но не освобождает его после работы.
Поэтому ссылки на параметры AngelScript в основном совместимы с сcылками C++, или указателями, исключая моменты когда адрес не может быть сохранен для дальнейшего использования, так как обьект может быть удален после отработки функции.
Если необходимо хранить адреса обьктов, используйте хендлы.
| Ссылка | Описание |
| &in | В функцию передается ссылка на копию значения. Для скриптовых функций это не важно, но поддерживается для совместимости с зарегистрированными функциями приложения. |
| const &in | Если валидность значения гарантируется во время исполнения функции, ссылка на настоящий обьект передается в функцию, иначе создается копия. |
| &out | В функцию передается ссылка на неиницилизированное значение. Когда функция возвращает значение, оно копируется в настоящую ссылку. Аргумент выражения оценивается только после вызова функции. Данный вид лучше всего подходит для функций, возвращающих несколько значений. |
| const &out | Бесполезно, так как функция не сможет изменить значение. |
| &inout | Настоящая ссылка всегда передается в функцию. Если время жизни не может быть гарантировано, будет выдана ошибка во время компиляции и скриптер должен скопировать локальную переменную перед тем как передавать ссылку на нее в скрипт. Обьекты, которые поддерживают хендлы наилучше подходят в данной ситуации, так как они могут гарантировать время жизни ссылки. |
| const &inout | Ссылка не может быть изменена функцией. |
Если приложению требуются параметры ссылкой, как в C++, установить движку свойство asEP_ALLOW_UNSAFE_REFERENCES.
При этом ссылки могут быть указаны без in, out, и inout.
Параметр-ссылка без зарезервированных слов всегда будет передавать адрес оригинального значения.
Параметр-ссылка с зарезервированными словами in и out будут работать как и раньше, а со словом inout ограничения будут убраны, так что вы сможете работать как с обычными C++ ссылками.
В данном режиме программист приложения и скриптер должны помнить, что скрипт может обращаться к протухшим ссылками, что небезопасно.