奇怪的C声明

时间:2013-07-17 18:04:55

标签: c c99

void test(int x[static 10]);  

int main()  
{  
    int a[]={1,2,3,4,5,6,7,8,9,10,11};  
    test(a);  
    return 0;  
}  

void test(int x[static 10])  
{  
    printf("%d",x[9]);  
} 

我一直在寻找奇异的C语句。我发现了这个,但无法理解该语句中static 10的用法是什么。是否与int x[10]相同?

另一方面,您也可以使用volatile代替static例如int x[volatile 10]
有谁知道这种声明的用途是什么?

PS:使用GCC 4.6.3编译,

1 个答案:

答案 0 :(得分:5)

它提示编译器告诉x指针参数指向至少10个元素的数组的第一个元素。

例如:

test(NULL);  // undefined behavior