Bu bölümde bir dizinin boyutunu(eke nasıl öğrenebiliriz, diziler üzerinde çalışırken kullanabileceğimiz ne tür fonksiyonlar var onları göreceğiz.
Öncelikle bir integer dizi tanımlayarak başlayalım.
int array[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Tanımladığımız bu dizinin eleman sayısını öğrenmek için önce dizinin boyutunu(kaç byte yer kapladığını) ve içinde bir elemanın boyutunu(kaç byte olduğunu) bulmamız gerekiyor. Daha sonra bulduğumuz bu iki değeri birbirine böldüğümüzde dizinin eleman sayısını bulabiliriz.
int arrayByte = sizeof(array);
int integerByte = sizeof(array[0]);
int arraySize = sizeof(array)/sizeof(array[0]);
int arraySize = arrayByte / integerByte;
std::cout << arraySize << std::endl;
Bu kod parçası bize 40/4=10 sonucunu verir.
Bir dizinin eleman sayısını bulmak için farklı ve hazır yöntemler de var. Bunlardan bir tanesi iterator kütüphanesinden size() fonksiyonunu kullanmak. Bu fonksiyon sayesinde kolay bir şekilde dizimizin eleman sayısını bulabiliriz.
#include <iterator>
std::cout << std::size(array) << std::endl;
Bu fonskiyon da bize 10 sonucu döndürecektir.
Dikkat etmemiz gereken bir diğer konu da dizimizi bir fonksiyona parametre olarak gönderirken, diziyi bir dizi olarak değil de bir işaretci olarak gönderiyor oluşumuz. Bu sebepten dolayı fonksiyon içinde dizimizin boyutunu öğrenmek istediğimizde hatalı bir sonuçla karşılaşırız. Örnek vermek gerekirse,
void printSize(int array[])
{
std::cout << sizeof(array)/sizeof(array[0]) << std::endl;
}
Yukarda yazmış olduğumuz fonksiyona 10 elemanlı integer dizimizi gönderdiğimizde fonksiyonun ekrana 10 değil de 2 yazdığını görürüz. Bunun sebebi pointerın kapladığı alanın 8 byte ve integerın kapladığı alanın 4 byte oluşudur.
Dizinin eleman sayısını nasıl buluruz ve nelere dikkat etmeliyiz öğrenmiş olduk. Dizileri daha detaylı öğrenmek için diğer yazılara göz atabilirsiniz.