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);
}
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.
Fonksiyonda x[1] yerine x[0] yazıp denermisin.
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.