2013-07-22 35 views
2

6.7.6說明符Is []是否也是C中的聲明符(當用於參數聲明時)?

每個聲明符聲明一個標識符,並且斷言,當相同 形式作爲說明符的操作數出現在一個表達式,其指定的功能或與對象聲明說明符指示的 範圍,存儲持續時間和類型。

而且還指出約語法參數的

parameter-declaration: 
    declaration-specifiers declarator 
    declaration-specifiers abstract-declarator(opt) 

對於給定的函數原型

int f(int a[], int n); 

int a[]聲明瞭聲明符a[]其中宣佈的標識符a的參數。


儘管在的情況下

int f(int [], int n); 

int []聲明參數是一個陣列的INT沒有標識符。
[]也是一個聲明符?(我認爲不是,因爲它沒有聲明一個標識符,但參數的語法是這樣的!)

+1

**每個聲明符聲明一個標識符**。 '[]'是一個*抽象聲明符*。 –

+0

@ n.m .;什麼是抽象聲明者?我完全是想着這個! – haccks

+0

@ n.m .;謝謝。 [Here](http://msdn.microsoft.com/en-IN/library/b198y5xs(v = vs.80).aspx)。 – haccks

回答

6

在無標識符參數聲明中,您有一個抽象聲明程序。也就是說,int f(int [], int n)中的[]是該數組的抽象聲明。您可以在ISO/IEC 9899:2011(C11標準)中的章節§6.7.6聲明符號和§6.7.7 中輸入名稱