C语言C99标准中的变长数组(VLA)

长期以来,我都很自然的认为定义和声明数组时,数组大小必须是一个常量表达式,因为刚学编程的时候在这个上面翻过好多次语法错误。那个时候大致会写如下的代码:

image.png

这段代码在VC 6中是编译不过的。

但今天有了解到,在C语言的C99标准中,是可以有变长数组的,即可以存在Arrays of Variable Length,也就是说,上面的代码在支持C99的编译器中是合法的。

但在GNU C下有点小特殊,使用gcc -std=c89编译上述代码,发现也是OK的!原来,变长数组在c89中是作为GNU C的一个扩展存在的。具体可以参考gcc的手册:http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

继承、接口与多态的相关问题

继承:通过继承实现代码复用。Java中所有的类都是通过直接或间接地继程java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类...

532
来自专栏Android机动车

设计模式——模板方法模式

● 1.定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。

641
来自专栏老马说编程

(19) 接口的本质 / 计算机程序的思维逻辑

数据类型的局限 之前我们一直在说,程序主要就是数据以及对数据的操作,而为了方便操作数据,高级语言引入了数据类型的概念,Java定义了八种基本数据类型,而类相当...

19310
来自专栏恰同学骚年

剑指Offer面试题:13.调整数组顺序使奇数位于偶数前面

  例如有以下一个整数数组:12345,经过调整后可以为:15342、13542、13524等等。

876
来自专栏java一日一条

Java集合框架综述

近被陆陆续续问了几遍HashMap的实现,回答的不好,打算复习复习JDK中的集合框架,并尝试分析其源码,这么做一方面是这些类非常实用,掌握其实现能更好的优化我们...

694
来自专栏小樱的经验随笔

【Java学习笔记之二十一】抽象类在Java继承中的用法小结

一、抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类...

2799
来自专栏个人随笔

设计模式(1)

  注:本文章示例为C#代码,设计模式通用任何编程语言,可放心阅读 设计模式(3W1H)   What?针对特定问题特出的特定的解决方案   Why?让程序有更...

30811
来自专栏java学习

你是真的了解多态吗?谈谈你对多态的了解以及应用

现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。

592
来自专栏Vamei实验室

Python基础10 反过头来看看

从最初的“Hello World”,走到面向对象。该回过头来看看,教程中是否遗漏了什么。 我们之前提到一句话,"Everything is Object". 那...

1709
来自专栏C/C++基础

Google C++编程风格指南(四)之类的相关规范

类是C++中基本的代码单元,自然被广泛使用。本节列举了在写一个类时要做什么、不要做什么。

772

扫码关注云+社区