变长数组类型(VLA)是C99标准中引入的新特性,用于定义在运行时确定大小的数组。C11标准引入了可变长度数组类型(variably-modified type),也可以用于定义在运行时确定大小的数组。不过,可变长度数组类型只能用作函数参数类型、函数返回值类型或者转换结果类型(cast result),而不能用来定义全局变量或者静态变量。
下面是一个包含可变长度数组类型的函数示例:
#include
void print_array(int n, int arr[n]) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int n = 5;
int arr[n];
for (int i = 0; i < n; i++) {
arr[i] = i;
}
print_array(n, arr);
return 0;
}
在上面的代码中,print_array函数的第二个参数是一个可变长度数组类型。在main函数中定义了一个大小为5的数组,并传入print_array函数中进行打印。由于可变长度数组类型只能作为函数参数类型使用,所以无法定义一个大小为n的全局数组或静态数组。