加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么以及如何使用C允许使用动态值创建编译时数组

发布时间:2020-12-16 10:37:11 所属栏目:百科 来源:网络整理
导读:参见英文答案 Why does C++ allow variable length arrays that aren’t dynamically allocated?????????????????????????????????????4个 在编写一些代码时,我意识到我的一个代码工作,根据我的理解不应该工作.代码是 int main() { int val; cinval; int arr
参见英文答案 > Why does C++ allow variable length arrays that aren’t dynamically allocated?????????????????????????????????????4个
在编写一些代码时,我意识到我的一个代码工作,根据我的理解不应该工作.代码是

int main() {
    int val;
    cin>>val;
    int array[val];
}

不仅如此,即使是下面的代码也能正常工作

int main() {
        int valone = rand();
        int valtwo = rand();
        int array[valone][valtwo];
    }

我总是理解静态数组需要常量值,或编译器在编译期间可以推导出的值.

最近的C 11/14规范是否有任何变化,或者从一开始就适用于C.

NOTE: Visual Studio Compiler does gives an error in this case,but g++ as
well as clang successfully compiles above code

解决方法

这是一个 variable-length array.

它们由C99支持,GCC和Clang都支持它们作为非标准扩展. (它们不是C语言的一部分.)MSVC不支持C99,因此根本不支持它们.

在标准C中,您将使用std :: vector.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读