Array’ler bellekte ardışık bir şekilde tutulan dizinle/indeksle erişilebilen bir veri yapısıdır.

  • X bytelık bir türün/tipin N elemanı için : X*N bytelık yer kaplar
  • Elemanlar bellekte ardışık şekilde tutulur.
  • Elemanlara random access yapılabilir.
  • Çok boyutlu olabilir ama bellekte her zaman tek boyutlu gibi saklanır. Sadece erişim esnasında matematiksel olarak 2D şeklinde erişilir.
#include <iostream> 
using namespace std;

int main() {
	int A[5]; // Stackta 5 integerlık bir dizi oluşturduk

	// Dizinin içini değerlerle doldurduk
	for (int i = 0; i < 5; i++) {
		A[i] = i * 2;
	}

	// Yazdırdık
	cout << "Dizinin ve ilk elemaninin adresi aynidir:" << endl;
	cout << "A    :\t" << A << endl;
	cout << "&A[0]:\t" << &A[0] << endl;

	cout << endl << "Dizinini tum elemanlari ve adresleri:" << endl;
	for (auto& i : A)
		cout << "- "<<i << "\t" << &i << endl;
	cout << endl;




	// iki boyutlu bir integer dizi oluşturduk
	int B[3][5]; 

	// Değerler atadık
	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 5; j++)
			B[i][j] = i + j;


	// İki boyutlu bir dizi oluşturmanin ikinci yolu
	int *C[3]; // int* array // stack 
	C[0] = new int[5]; // int array heap
	C[1] = new int[5]; // int array heap
	C[2] = new int[5]; // int array heap


	// İki boyutlu bir dizi oluşturmanın üçüncü yolu 
	int** D; // pointera point eden bir pointer.!?  // stack
	D = new int* [3]; // int* array heap
	D[0] = new int[5]; // int array heap
	D[1] = new int[5]; // int array heap
	D[2] = new int[5]; // int array heap
}

2D array indeksinin formülü:

A[i][j]'nin~gerçek~indeksi\\ \Downarrow \\i*bir~satırın~byte~cinsinden~büyüklüğü+j

3 veya daha yüksek boyutlu arrayler için de benzer kurallar geçerlidir.

Çok boyutlu array’lerde satır veya sütun öncelikli dizilim olabilir. Bu durum array üzerindeki elemanların erişim hızlarını değiştirir. Farklı işler için farklı dizilimler daha iyidir fakat bu genelde dil seviyesinde olan bir iş olduğu için yapılabilecek pek bir şey yok.

https://craftofcoding.wordpress.com/2017/02/03/column-major-vs-row-major-arrays-does-it-matter/

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *