статичен в декларатора на масив от параметри
void f(int a[static 10]);
static
тук е индикация, че параметър a
е указател към int
, но че обектът на масива (където a
е указател към неговия първи елемент) има поне 10
елемента.
Тогава компилаторът има правото да приеме, че аргументът f
не е NULL
и следователно може да извърши някои оптимизации. gcc
в момента не извършва оптимизация (източник):
„Информацията, предоставена от статични декларатори на масив от параметри, не се използва за оптимизация. Може да има смисъл да се използва в бъдеще заедно с работата по предварително извличане.“
квалификатор в декларатора на масив от параметри
void g(int a[cvr 10]);
вътре g
a
е cvr указател към int
(cvr е const
, volatile
или restrict
квалификатор). Например с const
това означава, че a
е const
указател към int
(т.е. тип int * const
).
Така че декларация на параметър:
T param[cvr e]
е същото като декларация на параметър:
T * cvr param
* в декларатора на масив от параметри
void h(int a[*]);
[*]
в декларация на параметър на формален масив в декларация на функция (която не е част от дефиниция на функция) показва, че официалният масив е масив с променлива дължина.
person
ouah
schedule
09.07.2013