Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: respected - 06 Ağustos 2019, 15:23:38

Başlık: Pointer değişkenli fonksiyon
Gönderen: respected - 06 Ağustos 2019, 15:23:38
Merhabalar arkadaşlar. Aşağıdaki kodlar C editörlerinde çalışıyor ve her bilgisayarda faklı sonuçlar veriyor. Bunun bellek adresi ile alakalı olduğunu düşünüyorum.

Fakat pointer değişkeni olarak verilen x için nasıl bir dizi elemanı işlemi yapar gibi işlem yapılıyor. Bunu bana açıklayabilecek olan biri var mıdır acaba?

Teşekkürler
#include <stdio.h>

 long test ( unsigned long *x)
{
return x[1];
}

int main()
{
    unsigned long R,i=10;
R =  test (&i);
    printf ("%02X ",R);
   
}
Başlık: Ynt: Pointer değişkenli fonksiyon
Gönderen: Tagli - 06 Ağustos 2019, 16:08:40
Burada garip bir durum yok. Pointer'ları o şekilde dizi gibi kullanabilirsin. Bu durum dilin bir özelliği ki bence çok da kullanışlı.

Ancak sorun şu ki senin kodda x[0] i'ye erişir fakat onun ötesinde, yani x[1]'de ne olduğu bilinemez. Rastgele bir değer olabilir, başka bir değişken olabilir, stack'te kalmış bir çöp olabilir. Temel kural şudur ki, kendi tahsis etmediğin alanlara pointer'lar ile erişmemelisin.

Ekleme: x[1]'i *(x+1) gibi düşün.
Başlık: Ynt: Pointer değişkenli fonksiyon
Gönderen: RaMu - 06 Ağustos 2019, 16:12:58
Fonksiyonda x[1] yerine x[0] yazıp denermisin.
Başlık: Ynt: Pointer değişkenli fonksiyon
Gönderen: respected - 06 Ağustos 2019, 16:44:55
Tamam olayı anladım arkadaşlar.

@RaMu hocam x[0] kullanınca 10 değeri veriyor. Teşekkür ederim.

 Ben pointer kullanırken neden x, x+1,x+2 gibi işlenmiyorda dizi elamanı gibi gösteriliyor ona takılmıştım.