6
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 编译,

4

1 回答 1

5

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

例如:

test(NULL);  // undefined behavior
于 2013-07-17T18:06:48.697 回答