Nitelikli göstergelerin bir kural olarak bana açıklandığını belirtildi: İşaretçi tarafından erişilen ve herhangi bir yerde değiştirilen herhangi bir nesneye yalnızca işaretçi tarafından erişilir. Yani aşağıdakiler işe yaramaz değil mi?Geçiş, kalifiye işaretçileri fonksiyonlara göre kısıtlıyor mu?
void agSum(int * restrict x, int n){
for(int i=0; i<n-1; i++) x[i+1] += x[i];
}
int SumAndFree(int * restrict y, int n){
agSum(y);
printf("%i",y[n-1]);
free(y);
}
Yani, y [n-1] bir yerde, doğrudan sınırlamak işaretçi y erişilmez modifiye edilir, ve y tarafından okunur için bu geçersiz olduğunu tahmin.
Eğer bu doğruysa, giriş işaretçisi kalifiye sınırlandığında işlevleri nasıl arayabilirsin? Fonksiyon, kısıtlama kuralını ihlal etmeden hiçbir şey yapamaz gibi görünüyor.
Kısıtlama işaretleyiciyi serbest bırakmak başka bir ihlal mi? Bu bir değişiklik, sanırım.
Şimdiden teşekkürler!
Oh! Çok teşekkürler! – Sheila