Standart C Programlama Dili


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. (dizinin 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.