özel bir sebebi yok. sadece pointer mantığını anlamak için yazmıştım. Aynısını diziylede yapabilirim biliyorum evet ama pointerla yapmak istemiştim.
pointer aritmetiğinde örneğin p+1 denildiği zaman compiler memoride bir interger boyutu kadar ilerideki ardesi göstermeye başlar. sıkıntı burada oluşuyor. pointer için ( ilk satırda yazdığın kod sebebiyle ) sadece bir integerlık yer almasına rağmen p+1 ile sahip olmağın yere değer atamaya çalışıyor.
koda eklediğiniz satırda bellekten ne kadar yer tahsis ediyorsunuz? ben malloc() fonksiyonunu genelde p=(int *)malloc(.....*sizeof(int)) şeklinde kullanılıyor diye biliyordumda. noktalı kısmada bir sayı geliyordu. Yani bu vakte kadar ben böyle gördüm.
Sizin denediğiniz gibi yaptım ve sorunu çözdüm evet, sağolun ama dediğim gibi, ne kadar yer tahsis ediyoruz öyle yazınca?
Dediğin şekilde de yani o kısma sayı gelecek şekilde de yapılabilir. Bu şekilde yapıldığında yani benim yazdığım gibi yapıldığında memory'den gereksiz yer işgali yapmış olabiliyoruz.
Senin örneğinde 10 adet rakam alındığı için random olarak, malloc kısmında o rakamın gelebileceği yere 10 yazabiliriz. 10 adet sayı için bellek tahsisi yapıyor. int = 4 byte. 10 sayı diye belirttiğimizde 40 byte'lık yer tahsis etmiş oluyoruz bu şekilde. Öbür türlü daha fazla bir işgal söz konusu olabilir. :)
Bir de benden sana ödev olsun. Bu kodda kullanmamışız gerçi.
free(); fonksiyonunun kullanımına bak. Nerelerde neden kullanırız diye.
'p' may be used uninitialized in this function -wmaybe-uninitialized. var mıdır çözümünü bilen. Yada kodda bir sıkıntı mı var bilemedim ki.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.