4.3.6. restrict
Göstergeler
Bir veya birden fazla gösterge kullanarak, aynı bellek alanına birden fazla yöntemle erişilebilir. Örneğin, aşağıdaki fonksiyon verilen sayıdaki tamsayıyı bir alandan başka bir alana kopyalar.
void kopyala (int * restrict hedef, int * restrict kaynak, int sayi) { while (sayi-- > 0) *hedef++ = *kaynak++; }
Bu fonksiyon çağrılırken verilen kaynak
ve hedef
bellek alanlarının birbirinden bağımsız olduğu
ve örtüşmediği varsayılmıştır. Örneğin,
kopyala (dizi+5, dizi, 5);
şeklindeki bir çağrı buna uymaktadır.
(dizi
nin en az 10 elemana sahip
olduğu varsayılmıştır.) Ancak,
kopyala (dizi+2, dizi, 5);
şeklinde bir çağrı bu kurala uymamaktadır.
restrict
anahtar sözcüğü ile derleyiciye eniyileme
yapması için bir ipucu verilmektedir. Programcının kullanım sırasında,
yukarıdaki örnekte görüldüğü gibi, kural dışı kullanım yapmaması gerekmektedir;
aksi takdirde belirsiz sonuçlar ortaya çıkabilir.