20 Kasım 2019, 20:31:58

Haberler:

Picproje Pazar Sohbetleri: https://bit.ly/2GHsjAK


Pointer değişkenli fonksiyon

Başlatan respected, 06 Ağustos 2019, 18: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
	

	
=  test (&i);
    
printf ("%02X ",R);
   
}

Tagli

06 Ağustos 2019, 19:08:40 #1 Son düzenlenme: 06 Ağustos 2019, 19:10:35 Tagli
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.