为什么C中的变长数组不能声明为静态?例如,不允许此声明:
static char str1[lengthOfaString];
Run Code Online (Sandbox Code Playgroud)
当应用于本地标识符时,该static关键字指定由该标识符指定的对象具有静态存储持续时间.这意味着在评估任何非常量表达式之前,该对象存在于程序的整个生命周期中.
根据定义,当控件到达数组声明时,可变长度数组的长度由在运行时计算的表达式指定.系统不能为这样的对象提供静态存储持续时间,因为它在对象必须已经存在之后的某个时间才知道对象的大小.
另请注意,所有文件范围变量都具有静态存储持续时间,因此无法在文件范围内声明VLA.实际上,在文件范围内,static关键字与存储持续时间无关; 相反,在该上下文中,它指定内部链接.
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |