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

查看:98
本文介绍了c - 请问怎样理解变长数组(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每次都不一样,但是确定就不会发生变化
        ...
    }
    ...
}

这篇关于c - 请问怎样理解变长数组(VLA)的长度不变?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆