gpt4 book ai didi

c - c 中的可变长度数组和静态声明

转载 作者:行者123 更新时间:2023-11-30 18:21:32 25 4
gpt4 key购买 nike

为什么 C 中的变长数组不能声明为静态?例如,不允许这样的声明:

static char str1[lengthOfaString];

最佳答案

当应用于本地标识符时,static 关键字指定该标识符指定的对象具有静态存储持续时间。这意味着该对象在程序的整个生命周期中都存在,从计算任何非常量表达式之前开始。

根据定义,可变长度数组的长度由在运行时(当控制权到达数组声明时)计算的表达式指定。系统无法为此类对象提供静态存储持续时间,因为直到该对象必须已经存在一段时间后,它才知道该对象的大小。

另请注意,所有文件范围变量都具有静态存储持续时间,因此 VLA 根本无法在文件范围内声明。事实上,在文件范围内,static 关键字与存储持续时间无关。相反,在该上下文中,它指定内部链接

关于c - c 中的可变长度数组和静态声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com