AMXXPawn new关键字

1. 使用new创建变量

new关键字可用于声明全局变量和局部变量:点击查看变量指南

若声明全局变量,可称呼为’插件私有变量‘或’插件内部变量‘。

全局变量会获得的特性:

这种变量属于数据段变量,其初始值在插件启动时就已经确定。

若声明局部变量,可称呼为’临时变量‘、‘自动变量‘、‘栈变量‘。

局部变量会获得的特性:

这种变量仅在声明语句所在代码块内可使用(从初始化表达式位置开始,到代码块}位置结束)。

若声明语句被goto跳转语句跳过,变量值会失去自动初始化的机会,访问变量只会得到垃圾数据。

被声明的变量不是数组情况下,初始化表达式可以是运行时表达式,可含有变量、函数、重载的运算符。

若代码执行流程已经脱离声明语句所在代码块(例如returnbreakgoto跳出,或自然退出),变量会被自动销毁。

示例代码:

#include <amxmodx> #include <float> // 多余的指令,amxmodx.inc内部已经引用此文件,定义了浮点数运算符重载 public plugin_init() { // 进入函数体代码块 goto Label; new localVar1; // 正常情况下,localVar1会被自动赋0值,但因为被goto跳过,因此其值为垃圾数据 Label: new Float:localVar2 = 15.0 + 15.0; // 初始化表达式包含被重载的运算符+ new Float:localVar3 = localVar1; // 初始化表达式包括变量 { // 进入复合语句块 new localVar4 = floatround(localVar2); // 初始化表达式包括函数 } // 删除localVar4变量 } // 删除localVar3,localVar2,localVar1变量

2. new与其它声明说明符组合

声明说明符组合 全局变量特性 局部变量特性
new 储存在数据段
插件私有
储存在栈区
临时定义
自动销毁
new const 储存在数据段
插件私有
只读
储存在栈区
临时定义
自动销毁
只读
new stock 储存在数据段(重复)
插件私有(重复)
备用
编译报错
new static 储存在数据段(重复)
文件私有(覆盖插件私有)
编译报错
new public 储存在数据段(重复)
插件私有(重复)
生成AMX平台公共变量
编译报错
new const stock
new stock const
储存在数据段(重复)
插件私有(重复)
备用
只读
编译报错
new const static
new static const
储存在数据段(重复)
文件私有(覆盖插件私有)
只读
编译报错
new const public
new public const
储存在数据段(重复)
插件私有(重复)
生成AMX平台公共变量
只读
编译报错
new static stock
new stock static
储存在数据段(重复)
文件私有(覆盖插件私有)
备用
编译报错
new public stock
new stock public
储存在数据段(重复)
插件私有(重复)
生成AMX平台公共变量
备用
编译报错
new static stock const
new static const stock
new stock static const
new stock const static
new const static stock
new const stock static
储存在数据段(重复)
文件私有(覆盖插件私有)
备用
只读
编译报错
new public stock const
new public const stock
new stock public const
new stock const public
new const public stock
new const stock public
储存在数据段(重复)
插件私有(重复)
生成AMX平台公共变量
备用
只读
编译报错