开发者社区 问答 正文

请问怎样理解变长数组(VLA)的长度不变?

变长数组是指用整型变量或表达式声明或定义的数组,而不是说数组的长度会随时变化,变长数组在其生存期内的长度同样是固定的。

请问如何理解其中的长度不变?

展开
收起
杨冬芳 2016-05-30 19:16:30 2702 分享 版权
1 条回答
写回答
取消 提交回答
  • IT从业

    在C里面,数组的大小就是不可以改变的,就算是指针分配的动态数组一般情况下也是不能轻易改变的
    变长指的是数组的大小是随着每次进入该函数或者代码块的时候数组的大小可以是变化的,但即便是这样子,数组本身的大小在退出该代码块或者函数的之前是不会发生改变的

    void fvla(int n) 
    {
        char buff[n];    //n每次都不一样,但是一旦确定就不会发生改变
        ...
    }
    
    int main(void) 
    {
        //长度必须是 整数字面量或者const修饰的变量
        char array[128]; //定长数组,长度在main退出之前不会发生变化
    
        for (int i = 1;i < 10;i ++) {
            char buff[i]; //同函数的情况,n每次都不一样,但是确定就不会发生变化
            ...
        }
        ...
    }
    2019-07-17 19:21:00
    赞同 展开评论
问答地址: