Menu
Coddy logo textTech

Diziler ve Fonksiyonlar

Coddy'nin C++ Journey'sinin Temeller bölümünün bir parçası — ders 62 / 74.

Diziler, fonksiyonlara doğrudan tam diziler olarak aktarılamaz. Bir diziyi bir fonksiyona aktarmaya çalıştığınızda, dizi ilk elemanına işaret eden bir işaretçiye "indirgenir" (decay).

Örneğin:

int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
	int size = std::size(arr);
}

std::size(arr) size gerçek dizi boyutunu vermeyecektir. arr burada aslında bir dizi değil, bir pointer'dır. Pointer'lar bir sonraki derste öğrenilecektir.

Bu nedenle, dizileri fonksiyonlara aktarırken genellikle boyutu ayrı bir parametre olarak geçirmemiz gerekir:

void processArray(int arr[], int size) {
    // Artık boyut parametresini kullanarak diziyle güvenli bir şekilde çalışabiliriz
}

Fonksiyonun nasıl çağrılacağı aşağıdadır:

int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);

Ayrıca bir fonksiyonda dizi döndürmek mümkün değildir:

int[] processArray(int arr[]) {
	return arr;
}

Bu geçersizdir. Bunun yerine * söz dizimini kullanmalısınız:

int* processArray(int arr[]) {
	return arr;
}
int* newArr = processArray(arr);

Yıldız (*) söz dizimi, bir sonraki kursta ele alınacak olan işaretçileri (pointers) ifade eder.

Kopya kağıdı

Diziler doğrudan fonksiyonlara aktarılamaz - ilk elemanlarına işaret eden işaretçilere (pointer) "dönüşürler" (decay).

Dizileri fonksiyonlara aktarırken, boyutu ayrı bir parametre olarak geçmeniz gerekir:

void processArray(int arr[], int size) {
    // size parametresini kullanarak dizi ile çalışın
}

int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);

Diziler fonksiyonlardan doğrudan döndürülemez. Bunun yerine işaretçi (pointer) sözdizimini kullanın:

int* processArray(int arr[]) {
    return arr;
}
int* newArr = processArray(arr);

Kendin dene

Bu ders bir kod alıştırması içermiyor.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler