Pointer değişkenli fonksiyon

Başlatan respected, 06 Ağustos 2019, 15:23:38

respected

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);
   
}

Tagli

#1
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.
Gökçe Tağlıoğlu

RaMu

Fonksiyonda x[1] yerine x[0] yazıp denermisin.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

respected

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.