变长数组的概念
数组中有一维数组和多维数组,除此之外,还有一个变长数组,变长数组是C99标准加入的。在C99标准之前,C语言在创建数组的时候,给数组指定大小时只能使用常量表达式,或者在初始化数组的时候省略数组的大小。
int arr1[2]; //[]中的2就是我们说的常量值
int arr2[]; //省略数组大小
变量指定数组大小
在C99标准之后,我们就可以使用变量去规定数组的大小了。
int a = 0;
scanf("%d", &a);
int arr[a];
使用时通过 scanf() 函数输入想要的值,这样就可以在程序运行时给一个你想给的值,且值是可以变化的。
! 有一个值得注意的是,变长数组是不能初始化的,上述的代码中,变长数组就是没有初始化的。
根本原因是,变长数组的特征,就是数组长度只有在代码运行起来的时候才能确定,所以变长数组不能初始化。
并且在运行时确定好的数组大小,变长数组的大小是不能更改的,只有在下次运行代码时才能再次规定变长数组的大小。
变长数组的好处是在创建变量的时候,不必再随意给数组指定一个预估的值,程序可以在运行时给一个精确的长度。
变长数组的含义
变长数组的含义并不是说这个数组可以变长或者说数组的长度是可变的,数组的大小一旦确定了就不能再变化了。
变长数组的意思是数组的大小是可以使用变量来指定,在代码运行时可以通过指定变量的大小来指定数组元素的个数。