Picproje Elektronik Sitesi

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

Başlık: Pointer değişkenli fonksiyon
Gönderen: respected - 06 Ağustos 2019, 18: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
	

	
=  test (&i);
    
printf ("%02X ",R);
   
}
Başlık: Ynt: Pointer değişkenli fonksiyon
Gönderen: Tagli - 06 Ağustos 2019, 19: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, 19: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, 19: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.