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

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

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

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


在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每次都不一样,但是确定就不会发生变化
        ...
    }
    ...
}

变长数组的长度在编译时没办法确定,是在运行时确定的。
比如:int array[n],如果变量n是通过用户输入来确定的,这样的数组就成为变长数组。

【热门文章】
【热门文章】