[]

pointer
Niye
int a=5;
int *aPtr=&a;
şeklinde tanımlayıp sağda solda aPtr'yi kullanıyoruz? Onun yerine
int a=5; yapalım, adresi lazım olduğunda &a kullanalım, olmadığında a kullanalım.
Amaç?
int a=5;
int *aPtr=&a;
şeklinde tanımlayıp sağda solda aPtr'yi kullanıyoruz? Onun yerine
int a=5; yapalım, adresi lazım olduğunda &a kullanalım, olmadığında a kullanalım.
Amaç?

"Çok büyük projelerde her değişkenin adresinin direk bilinmesi hız kazandırır." demişti bizim hoca.
- Vicy89
(17.02.13 23:55:32)

yani diyorsunuz ki, ilk gösterilen şekilde kullanıldığında istenilen adresi bir kere alıp bir yerde saklıyor ve gerektiğinde hızlı bir şekilde kullanıyor; ötekinde ise adresi her seferinde baştan alıyor öyle kullanıyor? doğru mu anladım?
- trinitrotoluen
(17.02.13 23:58:48 ~ 23:59:14)

Genelde basit değişkenlerde, ve aynı function'ın içinde pek kullanılmaz zaten. Çoğunlukla bir function'a, function'ın içinde değiştirilecek bir şey verilecekse kullanılır pointer'lar.
Özellikle mesela büyükçe bir struct varsa, o struct'a pointer geçirirsiniz function'a. Daha az yer kaplar, ve orijinal struct'ı değiştirebilirsiniz.
Onun dışında bir loop içinde bir array'in tamamına bir şeyler yapacaksanız ve eski, dandik bir compiler'ınız varsa:
int i, arr[100];
for (i = 0; i < 100; i++)
arr[i] = i;
yerine
int i, arr[100];
int *p = arr;
for (i = 0; i < 100; i++, p++)
*p = i;
daha hızlı çalışabilir. Pointer aritmetiği kullanarak ileri düzeyde ilginç şeyler yapılabiliyor.
Özellikle mesela büyükçe bir struct varsa, o struct'a pointer geçirirsiniz function'a. Daha az yer kaplar, ve orijinal struct'ı değiştirebilirsiniz.
Onun dışında bir loop içinde bir array'in tamamına bir şeyler yapacaksanız ve eski, dandik bir compiler'ınız varsa:
int i, arr[100];
for (i = 0; i < 100; i++)
arr[i] = i;
yerine
int i, arr[100];
int *p = arr;
for (i = 0; i < 100; i++, p++)
*p = i;
daha hızlı çalışabilir. Pointer aritmetiği kullanarak ileri düzeyde ilginç şeyler yapılabiliyor.
- metalik
(18.02.13 03:04:14)
1