Sun Studio 12:C 用户指南

D.1.12 可变长度数组 (VLA):

6.7.5.2 数组声明符

在栈中分配 VLA 时,仿佛调用了 alloca 函数。无论其作用域如何,其生存期与通过调用 alloca 在栈中分配数据时相同;直到函数返回时为止。如果在其中分配 VLA 的函数返回时释放栈,则释放分配的空间。

尚未对可变长度数组强制施加所有约束。约束违规导致不确定的结果。


#include <stdio.h>
void foo(int);

int main(void) {
  foo(4);
  return(0);
}

void foo (int n) {
  int i;
  int a[n];
  for (i = 0; i < n; i++)
    a[i] = n-i;
  for (i = n-1; i >= 0; i--)
    printf("a[%d] = %d\n", i, a[i]);
}

example% cc test.c
example% a.out
a[3] = 1
a[2] = 2
a[1] = 3
a[0] = 4