İlk beyan derleyici söyler someArrayolduğu en az 100 elementler uzun. Bu optimizasyonlar için kullanılabilir. Örneğin, bunun someArrayasla olmadığı anlamına da gelir NULL.
C Standardının, işleve yapılan bir çağrı bu gereksinimleri karşılamadığında derleyicinin tanı koymasını gerektirmediğini unutmayın (yani, sessiz tanımsız davranıştır).
İkinci deklarasyon sadece someArray( someArrayelementler değil !) Const olarak bildirilir, yani yazamazsınız someArray=someOtherArray. Parametre ile aynıdır char * const someArray.
Bu sözdizimi yalnızca []bir işlev parametre listesindeki bir dizi bildiricisinin en iç kısmında kullanılabilir ; diğer bağlamlarda mantıklı olmazdı.
Yukarıdaki durumların her ikisini de kapsayan Standart metin C11 6.7.6.3/7'de (C99'da 6.7.5.3/7 idi):
Bir parametrenin '' tür dizisi '' olarak bildirilmesi, tür niteleyicilerinin (varsa) dizi türü türetme içinde [ve ]bu tür türünde belirtilenler olduğu '' tür için nitelikli işaretçi '' olarak ayarlanacaktır . Statik anahtar sözcüğü , dizi türü türevinin içinde [ve ]türünde de görünüyorsa , işleve yapılan her çağrı için, karşılık gelen gerçek bağımsız değişkenin değeri, bir dizinin ilk öğesine, en az boyut ifadesi.
int foo(struct bar [static 1]);yerineint foo(struct bar *);NULL işaretçileri kabul etmiyoruz fonksiyonlar için imza olarak. (Ben gcc derleyici uyarı verebilir böylece bu tür işlevleri işaretlemek için standart olmayan bir sözdizimi olduğunu biliyorum ..)