Pointer vs Array
İşaretçi, bellek konumuna bir referansı tutan bir veri türüdür (yani bir işaretçi değişkeni, bazı verilerin saklandığı bir bellek konumunun adresini saklar). Diziler, bir öğe koleksiyonunu depolamak için en yaygın kullanılan veri yapısıdır. Çoğu programlama dili, dizileri kolayca bildirmek ve dizilerdeki öğelere erişmek için yöntemler sağlar.
İşaretçi nedir?
İşaretçi, bazı verilerin saklandığı bir bellek konumunun adresini saklayan bir veri türüdür. Başka bir deyişle, bir işaretçi bellek konumuna bir referans tutar. İşaretçinin başvurduğu bellek konumunda depolanan verilere erişime dereferencing adı verilir. Çapraz ağaç / dizgiler, tablo aramaları vb. Gibi tekrarlayan işlemler yaparken işaretçiler kullanmak performansı artıracaktır. Bunun nedeni, işaretçilerin silinmesi ve kopyalanmasının, işaretçilerin işaret ettiği verilere gerçekten kopyalamaktan ve erişmekten daha ucuz olmasıdır. Boş gösterici hiçbir şeye işaret etmeyen bir göstericidir. Java'da, boş bir işaretçiye erişmek NullPointerException adında bir istisna oluşturur.
Dizi Nedir?
Şekil 1'de, tipik olarak bir diziye değer bildirmek ve atamak için kullanılan bir kod parçasıdır. Şekil 2, bir dizinin bellekte nasıl görüneceğini gösterir.
int değerleri [5]; [0] 100-değerleri; [1] 101 = değerler [2] 102 = değerler [3] 103 = değerler [4] 104 = değerler |
Şekil 1: Bir diziye değer bildirme ve atama kodu
100 | 101 | 102 | 103 | 104 |
Dizin: 0 | 1 | 2 | 3 | 4 |
Şekil 2: Bellekte saklanan dizi
Yukarıdaki kod, 5 tamsayı saklayabilen bir diziyi tanımlar ve bunlara 0 ila 4 arasındaki indeksler kullanılarak erişilir. Bir dizinin önemli özelliklerinden biri, dizinin tamamının tek bir bellek bloğu olarak ayrılması ve her öğenin dizide kendi alanını almasıdır. . Bir dizi tanımlandıktan sonra boyutu sabitlenir. Bu nedenle, derleme zamanında dizinin boyutundan emin değilseniz, güvenli tarafta olacak kadar büyük bir dizi tanımlamanız gerekir. Ancak, çoğu zaman, tahsis ettiğimizden daha az sayıda eleman kullanacağız. Böylece hatırı sayılır miktarda hafıza boşa harcanıyor. Öte yandan, “yeterince büyük dizi” aslında yeterince büyük değilse, program çökebilir.
İşaretçiler ve Diziler arasındaki fark nedir?
İşaretçi, bazı verilerin saklandığı bir bellek konumunun adresini saklayan bir veri türüdür, Diziler ise bir öğe koleksiyonunu saklamak için en yaygın kullanılan veri yapısıdır. C programlama dilinde, dizi indeksleme işaretçi aritmetiği kullanılarak yapılır (yani, x dizisinin ith öğesi * (x + i) ile eşdeğerdir). Bu nedenle, C'de, ardışık olan bir dizi bellek konumuna işaret eden işaretçi dizileri bir dizi olarak düşünülebilir. Ayrıca, sizeof operatörünün işaretçiler ve dizilerde nasıl çalıştığı konusunda bir fark vardır. Bir diziye uygulandığında, sizeof operatörü dizinin tüm boyutunu döndürürken, bir işaretçiye uygulandığında yalnızca işaretçinin boyutunu döndürür.