Bu eğitimde dizilerle çalışmayı öğreneceğiz. Örnekler yardımıyla C ++ programlamasında dizi öğelerini bildirmeyi, başlatmayı ve bunlara erişmeyi öğreneceğiz.
C ++ 'da, bir dizi aynı türden birden çok değeri depolayabilen bir değişkendir. Örneğin,
Bir sınıfın 27 öğrencisi olduğunu ve hepsinin notlarını kaydetmemiz gerektiğini varsayalım. 27 ayrı değişken oluşturmak yerine, basitçe bir dizi oluşturabiliriz:
double grade(27);
Burada, derece, en fazla 27 tür öğesi tutabilen bir dizidir double
.
C ++ 'da, dizilerin boyutu ve türü bildiriminden sonra değiştirilemez.
C ++ Dizi Bildirimi
dataType arrayName(arraySize);
Örneğin,
int x(6);
Buraya,
int
- depolanacak elemanın türü- x - dizinin adı
6
- dizinin boyutu
C ++ Dizisindeki Erişim Öğeleri
C ++ 'da, bir dizideki her öğe bir sayıyla ilişkilendirilir. Sayı, dizi dizini olarak bilinir. Bu indisleri kullanarak bir dizinin elemanlarına erişebiliriz.
// syntax to access array elements array(index);
Yukarıda gördüğümüz x dizisini düşünün.

Hatırlanması Gereken Birkaç Şey:
- Dizi indeksleri ile başlar
0
. Anlamı x (0), dizinde saklanan ilk elemandır0
. - Bir dizinin boyutu ise
n
, son eleman dizinde saklanır(n-1)
. Bu örnekte, x (5) son elemandır. - Bir dizinin elemanları ardışık adreslere sahiptir. Örneğin, başlangıç adresinin
x(0)
2120d olduğunu varsayalım. Daha sonra, sonraki elemanınx(1)
adresi 2124d, adresix(2)
2128d olacaktır ve bu böyle devam eder.
Burada her elemanın boyutuint
4 bayt artırılır. Bunun nedeni boyutunun 4 bayt olmasıdır.
C ++ Dizi Başlatma
C ++ 'da, bildirim sırasında bir diziyi başlatmak mümkündür. Örneğin,
// declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);

Bildirim sırasında diziyi başlatmak için başka bir yöntem:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Burada dizinin boyutundan bahsetmedik. Bu gibi durumlarda, derleyici boyutu otomatik olarak hesaplar.
Boş Üyelerle C ++ Dizi
C ++ 'da, bir dizinin bir boyutu varsa, dizide n
n adede kadar öğe saklayabiliriz. Bununla birlikte, n sayıdan az öğe saklarsak ne olur?
Örneğin,
// store only 3 elements in the array int x(6) = (19, 10, 8);
Burada, x dizisinin boyutu var 6
. Ancak biz onu sadece 3 elemanla başlattık.
Bu gibi durumlarda, derleyici kalan yerlere rastgele değerler atar. Çoğu zaman, bu rastgele değer basittir 0
.

Dizi öğeleri nasıl eklenir ve yazdırılır?
int mark(5) = (19, 10, 8, 17, 9) // change 4th element to 9 mark(3) = 9; // take input from the user // store the value at third position cin>> mark(2); // take input from the user // insert at ith position cin>> mark(i-1); // print first element of the array cout <> mark(i-1);
Örnek 1: Dizi Öğelerini Görüntüleme
#include using namespace std; int main() ( int numbers(5) = (7, 5, 6, 12, 35); cout << "The numbers are: "; // Printing array elements // using range based for loop for (const int &n : numbers) ( cout << n << " "; ) cout << "The numbers are: "; // Printing array elements // using traditional for loop for (int i = 0; i < 5; ++i) ( cout << numbers(i) << " "; ) return 0; )
Çıktı
Rakamlar: 7 5 6 12 35 Rakamlar: 7 5 6 12 35
Burada, bir kullanmış for
gelen yineleme için döngü i = 0
için i = 4
. Her yinelemede yazdırdık numbers(i)
.
Dizinin öğelerini yazdırmak için yine aralık tabanlı bir for döngüsü kullandık. Bu döngü hakkında daha fazla bilgi edinmek için C ++ Ranged for Loop'a bakın.
Not: Aralık tabanlı döngümüzde, aralık bildirimi const int &n
yerine kodu kullandık int n
. Ancak, const int &n
daha çok tercih edilir çünkü:
- Kullanımı
int n
basitçe her yineleme sırasında dizi öğelerini n değişkenine kopyalar. Bu, hafıza açısından verimli değildir.
& n, ancak, verilere yeni bir değişkene kopyalamadan erişmek için dizi elemanlarının hafıza adresini kullanır. Bu, hafıza açısından verimli. - Biz sadece dizi elemanlarını basıyoruz, değiştirmiyoruz. Bu nedenle,
const
dizinin değerlerini yanlışlıkla değiştirmemek için kullanırız.
Örnek 2: Kullanıcıdan Girdi Alın ve Bir Dizide Saklayın
#include using namespace std; int main() ( int numbers(5); cout << "Enter 5 numbers: " << endl; // store input from user to array for (int i = 0; i > numbers(i); ) cout << "The numbers are: "; // print array elements for (int n = 0; n < 5; ++n) ( cout << numbers(n) << " "; ) return 0; )
Çıktı
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
Once again, we have used a for
loop to iterate from i = 0
to i = 4
. In each iteration, we took an input from the user and stored it in numbers(i)
.
Then, we used another for
loop to print all the array elements.
Example 3: Display Sum and Average of Array Elements Using for Loop
#include using namespace std; int main() ( // initialize an array without specifying size double numbers() = (7, 5, 6, 12, 35, 27); double sum = 0; double count = 0; double average; cout << "The numbers are: "; // print array elements // use of range-based for loop for (const double &n : numbers) ( cout << n << " "; // calculate the sum sum += n; // count the no. of array elements ++count; ) // print the sum cout << "Their Sum = " << sum << endl; // find the average average = sum / count; cout << "Their Average = " << average << endl; return 0; )
Output
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
In this program:
- We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
Here,sum =0
andcount = 0
. - Then we used a range based
for
loop to print the array elements. In each iteration of the loop, we add the current array element to sum. - Ayrıca
1
, for döngüsünün sonunda dizinin boyutunu elde edebilmemiz için her yinelemede count değerini artırıyoruz . - Tüm öğeleri yazdırdıktan sonra, tüm sayıların toplamını ve ortalamasını yazdırıyoruz. Sayıların ortalaması şöyle verilir
average = sum / count;
Not:for
Normal bir döngü yerine aralıklı bir döngü kullandık for
.
Normal bir for
döngü, dizinin boyutuna göre verilen yineleme sayısını belirlememizi gerektirir.
Ancak aralıklı bir for
döngü bu tür özellikleri gerektirmez.
C ++ Sınır Dışı Dizi
10 boyutunda bir dizi bildirirsek, dizi 0'dan 9'a kadar olan indisleri içerecektir.
Ancak, öğeye indeks 10 veya 10'dan fazla erişmeye çalışırsak, Tanımsız Davranışla sonuçlanacaktır.