Sun Studio 12:C 用户指南

D.1.11 Static 及数组声明符中允许的其他类型限定符

6.7.5.2 数组声明符:

现在,关键字 static 可以出现在函数声明符中参数的数组声明符中,表示编译器至少可以假定许多元素将传递到所声明的函数中。使优化器能够作出以其他方式无法确定的假定。

C 编译器将数组参数调整为指针,因此 void foo(int a[])void foo(int *a) 相同。

如果您指定 void foo(int * restrict a); 等类型限定符,则 C 编译器使用实质上与声明限定指针相同的数组语法 void foo(int a[restrict]); 表示它。

C 编译器还使用 static 限定符保留关于数组大小的信息。例如,如果您指定 void foo(int a[10]),则编译器仍将它表达为 void foo(int *a)。按以下所示使用 static 限定符:void foo(int a[static 10]),让编译器知道指针 a 不是 NULL,并且使用它可访问至少包含十个元素的整数数组。