Pointerlar ile ilgili bir şey kafamı karıştırdı, pointerlar adres bilgisi tutuyor burada sorun yok ama bir pointeri dizi olarak tanımlayıp içini adres bilgisi vermeden direkt değerler ile dolduramıyoruz (öyle biliyorum) adres bilgisi vermemiz gerekiyor. Fakat bir pointer oluşturup, malloc ya da calloc fonksiyonlarıyla bellekten onun için yer alıp içini adres vermeden direkt değerler ile doldurabiliyoruz, sonuçta bir dizi değil mi? Nasıl oluyor bu? Açıklayamadım sanırım, görsel bırakıyorum. Kodda tanımlanan pointer için bellekten yer alıp dizi haline getiriyor ve ptr[0] ve ptr[1] in içine adres bilgisi vermeden direkt değer atanıyor nasıl olabiliyor anlamadım.
Şöyle söyleyeyim; malloc() fonksiyonu, sizin belirlediğiniz boyutta olacak şekilde belleğin heap kısmında yer açıyor. Bu heap kısmı ise düzensiz bir bellek, stack gibi üst üste olmadığından dolayı ve adres sadece işletim sistemi ve o pointer tarafından ulaşılabilinir.
Farklı bir adresteki veriye yazıp/silmek amacıyla tanımlanır pointer'lar. Eğer farklı adres ile işiniz yoksa stack kullanabilirsiniz. Umarım anlatabilmişimdir.
Yani diziler ve pointerlar aynı şeyi yapıyor, ikisi de ilk bloğun adresini tutuyor. Anladığım kadarıyla diziler statik, pointerlar dinamik olmuş oluyor bu durumda? Yani pointerları kullanmak daha avantajlı.
Şöyle söyleyeyim; malloc() fonksiyonu, sizin belirlediğiniz boyutta olacak şekilde belleğin heap kısmında yer açıyor. Bu heap kısmı ise düzensiz bir bellek, stack gibi üst üste olmadığından dolayı ve adres sadece işletim sistemi ve o pointer tarafından ulaşılabilinir.
Farklı bir adresteki veriye yazıp/silmek amacıyla tanımlanır Pointer'lar. Eğer farklı adres ile işiniz yoksa stack kullanabilirsiniz. Umarım anlatabilmişimdir.
Yani diziler ve pointerlar aynı şeyi yapıyor, ikisi de ilk bloğun adresini tutuyor. Anladığım kadarıyla diziler statik, pointerlar dinamik olmuş oluyor bu durumda? Yani pointerları kullanmak daha avantajlı.