C ++ Dizileri - Beyan - Başlat - Dizi Örneklerine İşaretçi

İçindekiler:

Anonim

Dizi nedir?

Dizi, aynı veri türündeki bir öğeyi sıralı olarak depolayan bir veri yapısıdır. Bir C ++ dizisinin sabit boyutu vardır.

Bir diziyi, benzer bir veri türünün değişkenleri koleksiyonu olarak görebilirsiniz. Her değişkeni ayrı ayrı bildirmek ve ona bir değer atamak yerine, bir değişken (dizi) tanımlayabilir ve çeşitli değişkenlerin değerlerini ona ekleyebilirsiniz. Diziye eklenen her değer bir indeks ile tanımlanır.

Bu C ++ eğitiminde şunları öğreneceksiniz:

  • Dizi nedir?
  • Neden dizilere ihtiyacımız var?
  • C ++ 'da bir dizi bildirme
  • Dizi Başlatma
  • Dizi Türleri
    • Tek Boyutlu Dizi
    • Çok Boyutlu Dizi
    • İki Boyutlu Dizi
    • Üç Boyutlu Dizi
    • Bir Diziye İşaretçi
  • Bir Dizinin değerlerine erişim
  • C ++ 'da Bir Dizinin Avantajları
  • C ++ 'da Bir Dizinin Dezavantajları

Neden dizilere ihtiyacımız var?

Diziler herhangi bir programlama dilinde çok önemlidir. Değişkenleri ayrı ayrı depolamak yerine birlikte depolamanın daha uygun bir yolunu veya benzer bir veri türündeki bir veri koleksiyonunu sağlarlar. Dizinin her bir değerine ayrı ayrı erişilecektir.

C ++ 'da bir dizi bildirme

C ++ 'da dizi bildirimi, dizi tarafından depolanacak öğelerin sayısının yanı sıra türün de belirtilmesini içerir. Sözdizimi:

type array-Name [ array-Size ];

C ++ 'da tek boyutlu bir dizi bildirme kuralları.

  • Tür: Tür , dizide depolanacak öğelerin türüdür ve geçerli bir C ++ veri türü olmalıdır.
  • Dizi-Adı: Dizi-Adı , diziye atanacak isimdir.
  • Dizi Boyutu: Dizi Boyutu , dizide depolanacak öğe sayısıdır. Bir tam sayı olmalı ve 0'dan büyük olmalıdır.

Örneğin yaş adında bir dizi oluşturabilir ve 5 öğrencinin yaşını aşağıdaki gibi saklayabilirsiniz:

int age[5];

Dizi yaşı, farklı öğrencilerin yaşlarını temsil eden 5 tamsayı saklayacaktır.

Dizi Başlatma

Dizi başlatma, bir diziye eleman atama / saklama işlemidir. Başlatma tek bir ifadede veya tek tek yapılabilir. Bir dizideki ilk öğenin 0 dizininde, son öğenin ise n-1 dizininde saklandığına dikkat edin; burada n, dizideki toplam öğe sayısıdır.

Yaş dizisi durumunda, ilk öğe dizin 0'da saklanırken, son öğe dizin 4'te saklanacaktır.

Dizi başlatmanın nasıl yapılacağını göstermek için yaş dizisini kullanalım:

int age[5] = {19, 18, 21, 20, 17};

{} İçindeki toplam öğe sayısı, [] içinde belirtilen değeri aşamaz. 19 öğesi 0 dizininde, 1 dizininde 18, dizin 2'de 21, dizin 3'te 20 ve dizin 4'te yer almaktadır. [] İçindeki dizide depolanacak öğelerin sayısını belirtmezseniz, dizi yalnızca {} içine eklenen öğeleri tutacak kadar büyük olacaktır. Örneğin:

int age[] = {19, 18, 21, 20, 17};

Yukarıdaki ifade, bir öncekiyle tam olarak aynı diziyi oluşturacaktır. Dizinini kullanarak bir diziye bir öğe de atayabilirsiniz. Örneğin:

age[3] = 20;

Yukarıdaki ifade, 20 değerini age isimli dizinin 3. dizininde saklayacaktır. 20 4 olacağı Bu araçlar inci dizi öğesi.

Dizi Türleri

İki tür C ++ dizisi vardır:

  • Tek boyutlu Dizi
  • Çok Boyutlu Dizi
  • Bir Diziye İşaretçi

Tek Boyutlu Dizi

Bu, veri öğelerinin yalnızca bir boyutta doğrusal olarak düzenlendiği bir dizidir. Genellikle 1-D dizisi olarak adlandırılır. Sözdizimi:

datatype array-name[size];
  • Dizi adı, dizinin adıdır.
  • Boyut, dizide depolanacak öğelerin sayısıdır.

Örneğin:

#include using namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout <

Çıktı:

İşte kodun bir ekran görüntüsü:

Kod Açıklaması:

  1. Kodumuza iostream başlık dosyası dahil. Konsoldan okumamıza ve konsola yazmamıza izin verecektir.
  2. Sınıflarını ve işlevlerini çağırmadan kullanmak için std ad alanını dahil etmek.
  3. Program mantığının eklenmesi gereken main () işlevini çağırmak.
  4. Main () işlevinin gövdesinin başlangıcı.
  5. 5 tamsayı depolamak için yaş adlı bir dizi bildirme 5 tamsayı da başlatıldı.
  6. Bir for döngüsü kullanarak bir tamsayı değişkeni x oluşturun.
  7. For döngüsü gövdesinin başlangıcı.
  8. Age dizisinin değerleri üzerinde yineleme yapmak ve bunları konsolda yazdırmak için döngü değişkenini x kullanma. "\ N" bir satırsonu karakteridir ve her yinelemeden sonra yeni bir satıra yazdırılır.
  9. Bir döngü için gövdesinin sonu.
  10. Main () işlevinin gövdesinin sonu.

Çok Boyutlu Dizi

Bu, veri öğelerinin bir dizi dizisi oluşturacak şekilde düzenlendiği bir dizidir. Çok boyutlu bir dizi herhangi bir sayıda boyuta sahip olabilir, ancak iki boyutlu ve üç boyutlu diziler yaygındır. Sözdizimi:

datatype array-name[d1][d2][d3]… [dn];

Dizi adı, n boyuta sahip olacak dizinin adıdır. Örneğin:

İki Boyutlu Dizi

2B bir dizi, verileri 1 boyutlu diziye sahip bir listede depolar. Satır ve sütunlardan oluşan bir matristir. 2B bir dizi bildirmek için aşağıdaki sözdizimini kullanın:

type array-Name [ x ][ y ];

Tür, geçerli bir C ++ veri türü olmalıdır. Tablo olarak bir 2D diziye bakın; burada x satır sayısını, y ise sütun sayısını gösterir. Bu, 2B dizideki her bir öğeyi a [x] [y] biçimini kullanarak tanımladığınız anlamına gelir; burada x satır sayısıdır ve y öğenin ait olduğu sütun sayısıdır.

2D dizinin nasıl başlatılacağına dair bir örnek:

int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};

Yukarıdaki örnekte, 2x3 matris olarak görülebilen bir 2D dizimiz var. 2 satır ve 3 sütun vardır. 0 öğesine bir [0] [1] olarak erişilebilir çünkü 0 dizinli satır ve dizine alınmış sütun 1'in kesişme noktasında yer alır. 3 öğesine [1] [2] olarak erişilebilir, çünkü 1. satır ile dizine alınmış sütunun kesişimi 2.

Farklı öğe sıralarını ayırt etmek için sadece kaşlı ayraçlar eklediğimizi unutmayın. Başlatma aşağıdaki şekilde de yapılabilirdi:

int a[2][3] = {0, 2, 1, 4, 3, 7};};

Aşağıdaki C ++ örneği, bir 2D dizinin nasıl başlatılacağını ve geçiş yapılacağını gösterir:

#include using namespace std;int main(){// a 2x3 arrayint a[3][2] = { {0, 2}, {1, 4}, {3, 7} };// traverse array elementsfor (int i=0; i<3; i++)for (int j=0; j<2; j++){cout << "a[" <

Çıktı:

İşte yukarıdaki kodun bir ekran görüntüsü:

Kod Açıklaması:

  1. Kodumuza iostream başlık dosyası dahil. Konsoldan okumamıza ve konsola yazmamıza izin verecektir.
  2. Sınıflarını ve işlevlerini çağırmadan kullanmak için std ad alanını dahil etmek.
  3. Kodun eklenmesi gereken main () işlevinin çağrılması.
  4. Main () işlevinin gövdesinin başlangıcı.
  5. Bir yorum. C ++ derleyicisi bunu atlayacaktır.
  6. 3 satır ve 2 sütundan oluşan bir 2D dizi bildirmek. Diziye öğeler de eklendi.
  7. Bir yorum. C ++ derleyicisi bunu atlayacaktır.
  8. Bir for döngüsü kullanarak i değişkenini oluşturmak. Bu değişken, dizinin satır dizinleri üzerinde yinelenecektir.
  9. Bir for a döngüsü kullanarak j değişkenini oluşturmak. Bu değişken, dizinin sütun dizinleri üzerinde yinelenecektir.
  10. Döngü gövdesinin başlangıcı.
  11. Konsolda köşeli parantez içinde konsolda i ve j değişkenlerinin değerlerini yazdırın.
  12. A dizisinin [i] [j] dizininde saklanan değeri yazdırın.
  13. Döngü gövdesinin sonu.
  14. Program düzgün çalışıyorsa main () işlevi bir tamsayı değeri döndürmelidir.
  15. Main () işlevinin gövdesinin sonu.

Üç Boyutlu Dizi

Bir 3B dizi, bir dizi dizisidir. 3B dizideki her öğe, 3 dizinden oluşan bir dizi ile tanımlanır. Bir 3B dizinin öğelerine erişmek için, döngüler için üç kullanırız. Örneğin:

#includeusing namespace std;void main(){int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};cout << "a[0][1][0] = " << a[0][1][0] << "\n";cout << "a[0][1][1] = " << a[0][1][1] << "\n";}

Çıktı:

İşte kodun bir ekran görüntüsü:

Kod Açıklaması:

  1. Kodumuza iostream başlık dosyası dahil. Konsoldan okumamıza ve konsola yazmamıza izin verecektir.
  2. Sınıflarını ve işlevlerini çağırmadan kullanmak için std ad alanını dahil etmek.
  3. Program mantığının eklenmesi gereken main () işlevini çağırmak.
  4. Main () işlevinin gövdesinin başlangıcı.
  5. 2x3x2 boyutunda bir 3B dizi bildirmek. Dizinin değerleri de başlatıldı.
  6. Dizinin [0] [1] [0] dizininde depolanan öğeye erişim ve bunu konsolda yazdırma.
  7. Dizinin [0] [1] [1] dizininde depolanan öğeye erişim ve bunu konsolda yazdırma.
  8. Main () işlevinin gövdesinin sonu.

Bir Diziye İşaretçi

İşaretçi, bir adresi tutan bir değişkendir. Bir değişkenin adresini saklamak için bir işaretçi kullanmaktan başka, onu bir dizi hücresinin adresini saklamak için kullanabiliriz. Bir dizinin adı sürekli olarak ilk elemanına işaret eder. Aşağıda verilen beyanı düşünün:

int age[5];

Yaş, yaş adındaki bir dizinin ilk öğesinin adresi olan $ age [0] için bir göstericidir. Aşağıdaki örneği düşünün:

#include using namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;}

Çıktı:

Yukarıdaki çıktının ilk değerinin, bilgisayarınızın belleğindeki dizinin ilk öğesine atanan adrese bağlı olarak farklı bir değer döndürebileceğini unutmayın.

İşte kodun bir ekran görüntüsü:

Kod Açıklaması:

  1. Kodumuza iostream başlık dosyası dahil. Konsoldan okumamıza ve konsola yazmamıza izin verecektir.
  2. Sınıflarını ve işlevlerini çağırmadan kullanmak için std ad alanını dahil etmek.
  3. Program mantığının eklenmesi gereken main () işlevini çağırmak.
  4. Main () işlevinin gövdesinin başlangıcı.
  5. John adında bir işaretçi değişkeni bildiriliyor.
  6. 5 tamsayı depolamak için yaş adında bir tamsayı dizisi bildirmek. Tamsayıların değerleri de başlatıldı.
  7. Age dizisinin ilk dizininde depolanan öğenin adresinin değerini john değişkenine atamak.
  8. Age dizisinin ilk dizininde depolanan öğenin adresi olan john değişkeninin değerini yazdırmak.
  9. Dizi çağında depolanan ilk değerin yazdırılması.
  10. Main () işlevinin gövdesinin sonu.

Dizi adları sabit işaretçiler olarak kullanılabilir ve bunun tersi de doğrudur. Bu, dizi yaşının 3. dizininde depolanan değere * (yaş + 3) ile erişebileceğiniz anlamına gelir. Örneğin:

#include using namespace std;int main() {// an array of 5 elements.int age[5] = { 19, 18, 21, 20, 17 };int *p;p = age;// output array valuescout << "Using pointer: " << endl;for (int x=0; x<5; x++) {cout << "*(p + " << x << ") : ";cout << *(p + x) << endl;}cout << "Using age as address: " << endl;for (int x = 0; x < 5; x++) {cout << "*(age + " << x << ") : ";cout << *(age + x) << endl;}return 0;}

Çıktı:

İşte kodun bir ekran görüntüsü:

Kod Açıklaması:

  1. Kodumuza iostream başlık dosyası dahil. Konsoldan okumamıza ve konsola yazmamıza izin verecektir.
  2. Sınıflarını ve işlevlerini çağırmadan kullanmak için std ad alanını dahil etmek.
  3. Main () işlevini ve main () işlevinin gövdesinin başlangıcını çağırmak.
  4. Bir yorum. C ++ derleyicisi bunu atlayacaktır.
  5. 5 tamsayı depolamak için yaş adlı bir dizi bildirme
  6. Bir tamsayı işaretçisi oluşturma s.
  7. Age dizisinin ilk elemanının adresinin değerini p atamak.
  8. Bir yorum. C ++ derleyicisi bunu atlayacaktır.
  9. Konsolda biraz metin yazdırın.
  10. Bir for döngüsü kullanarak bir x tamsayısı oluşturun. {, Bir döngü için gövdesinin başlangıcını gösterir.
  11. Konsolda başka bir metinle birlikte x değerlerini yazdırın.
  12. Konsolda * (p + x) değerlerini yazdırın.
  13. Bir döngü için gövdesinin sonu.
  14. Konsolda biraz metin yazdırın.
  15. Bir for döngüsü kullanarak bir x değişkeni oluşturun. {, For döngüsünün gövdesinin başlangıcını gösterir.
  16. Başka bir metinle birlikte 0'dan 4'e kadar x değerlerini yazdırın.
  17. * (Yaş + x) değerlerini yazdırın.
  18. For döngüsü gövdesinin sonu.
  19. Program başarılı bir şekilde çalışırsa dönüş değeri.
  20. Main () işlevinin gövdesinin sonu.

Bir Dizinin değerlerine erişim

Bir dizinin elemanlarına, ilgili indeksleri kullanılarak erişilir. Erişilecek elemanın dizini, dizi adından hemen sonra köşeli parantezler [] içine eklenir. Örneğin:

int john = age[2];

Yukarıdaki örnekte, sadece john'un yaşının age isimli dizinin 2. dizininde saklandığını belirtiyoruz. Bu, john'un yaşının, age dizisindeki 3. değer olduğu anlamına gelir . İşte bu değere nasıl erişilip yazdırılacağını gösteren eksiksiz bir C ++ örneği:

#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"<

Çıktı:

İşte kodun bir ekran görüntüsü:

Kod Açıklaması:

  1. Kodumuza iostream başlık dosyası dahil. Konsoldan okumamıza ve konsola yazmamıza izin verecektir.
  2. Sınıflarını ve işlevlerini çağırmadan kullanmak için std ad alanını dahil etmek.
  3. Kodun eklenmesi gereken main () işlevinin çağrılması.
  4. Main () işlevinin gövdesinin başlangıcı.
  5. 5 tamsayı elemanı saklamak için age isimli bir dizi bildirmek.
  6. Dizi yaşının dizin 2'sinde depolanan değere erişme ve değerini john adında bir değişkende saklama.
  7. Değişken john değerinin diğer metinle birlikte konsolda yazdırılması.

C ++ 'da Bir Dizinin Avantajları

C ++ 'da Array kullanmanın avantajları / avantajları şunlardır:

  • Dizi öğeleri kolayca gezilebilir.
  • Dizi verilerini işlemek kolaydır.
  • Dizi elemanlarına rastgele erişilebilir.
  • Diziler kod optimizasyonunu kolaylaştırır; dolayısıyla daha az kod kullanarak çok iş yapabiliriz.
  • Dizi verilerini sıralamak kolaydır.

C ++ 'da Bir Dizinin Dezavantajları

  • Bir dizinin boyutu sabittir; bu nedenle, başlatmadan sonra ona yeni öğeler ekleyemiyoruz.
  • Gereksinimden daha fazla bellek ayrılması, bellek alanının boşa harcanmasına neden olur ve belleğin daha az ayrılması bir sorun yaratabilir.
  • Bir dizide saklanacak elemanların sayısı önceden bilinmelidir.

Özet

  • Dizi, aynı veri türündeki öğeleri depolayan bir veri yapısıdır.
  • Dizi öğeleri sıralı olarak saklanır.
  • Dizi elemanları, ilgili indeksleri kullanılarak belirtilir. İlk eleman 0 dizininde, son eleman ise n-1 dizinindedir, burada dizi elemanlarının toplam sayısıdır.
  • Bir dizinin bildirimi, dizi öğelerinin veri türlerinin yanı sıra dizide depolanacak öğelerin sayısını tanımlamayı içerir.
  • Tek boyutlu bir dizi, öğeleri sırayla depolar.
  • İki boyutlu bir dizi, öğeleri satırlar ve sütunlar halinde depolar.
  • Üç boyutlu bir dizi, bir dizi dizisidir.
  • Öğeler, dizinleri kullanılarak bir diziye eklenebilir.
  • Dizi öğelerine dizinleri kullanılarak erişilir.
  • Çok boyutlu bir dizinin birden fazla boyutu vardır.
  • Dizi adı, ilk elemanına işaret eder.
  • Dizilerin sabit bir boyutu vardır, yani diziye başlatıldıktan sonra yeni öğeler eklenemez.