可变长数组(Arrays of Variable Length)

  • 早期C语言中定义数组:

类型说明符 数组名 [常量表达式];

type arrayName [ arraySize ]
(The arraySize must be an integer constant greater than zero)

  • Arrays of Variable Length
    c99引入了可变长数组(variable length array,简称VLA);gcc编译默认支持新的标准,也可以使用 -std=c99编译选项;

  • 常见问题
    使用可变长数组时由于编译阶段还不能确定数组长度,因此不能直接对其初始化,例如:
    char str[len] = {0}
    编译会报错:error: variable-sized object may not be initialized
    可以通过以下类似方式初始化:

char str[len];
memset(str, '\0', len);

另外,android studio 2.2中clang编译一样支持可变长数组

  • 参考
    [1] C - Arrays
    [2] Arrays of Variable Length
    [3] 数组~wiki
    [4] C语言一维数组的定义和引用

你可能感兴趣的:(可变长数组(Arrays of Variable Length))