new关键字可用于声明全局变量和局部变量:点击查看变量指南
若声明全局变量,可称呼为’插件私有变量‘或’插件内部变量‘。
全局变量会获得的特性:
这种变量属于数据段变量,其初始值在插件启动时就已经确定。
若声明局部变量,可称呼为’临时变量‘、‘自动变量‘、‘栈变量‘。
局部变量会获得的特性:
这种变量仅在声明语句所在代码块内可使用(从初始化表达式位置开始,到代码块}位置结束)。
若声明语句被goto跳转语句跳过,变量值会失去自动初始化的机会,访问变量只会得到垃圾数据。
被声明的变量不是数组情况下,初始化表达式可以是运行时表达式,可含有变量、函数、重载的运算符。
若代码执行流程已经脱离声明语句所在代码块(例如return、break、goto跳出,或自然退出),变量会被自动销毁。
示例代码:
#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变量
| 声明说明符组合 | 全局变量特性 | 局部变量特性 |
|---|---|---|
| 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平台公共变量 备用 只读 |
编译报错 |