Fonksiyon Argümanı Olarak Diziler
Coddy'nin C Journey'sinin Fundamentals bölümünün bir parçası — ders 58 / 63.
Diziler, C'de fonksiyonlara argüman olarak aktarılabilir. Bir dizi bir fonksiyona aktarıldığında, aslında aktarılan şey ilk elemanın bellek adresidir.
Bir dizi ve bu diziyi argüman olarak alan bir fonksiyon tanımlayın:
void displayArray(int arr[], int size) {
for(int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}Bir dizi oluşturun ve fonksiyonu çağırın:
int numbers[5] = {10, 20, 30, 40, 50};
displayArray(numbers, 5);Bir diziyi bir fonksiyona geçirdiğinizde, fonksiyon içinde dizide yapılan değişiklikler orijinal diziyi etkileyecektir:
void doubleValues(int arr[], int size) {
for(int i = 0; i < size; i++) {
arr[i] = arr[i] * 2;
}
}
// Fonksiyonu çağır
doubleValues(numbers, 5);
// Şimdi numbers şunları içerir: {20, 40, 60, 80, 100}Görev
Kolayİki argüman alan sumArray adında bir fonksiyon oluşturun:
- Bir tam sayı dizisi (arr).
- Dizinin boyutunu temsil eden bir tam sayı (size).
Fonksiyon, dizideki tüm elemanların toplamını hesaplamalı ve döndürmelidir.
Ardından, main fonksiyonu içerisinde:
- Bir n tam sayısı (dizinin boyutu) okuyun.
- n tane tam sayı okuyun ve bunları bir dizide saklayın.
- Dizi ile birlikte sumArray fonksiyonunu çağırın.
- Toplamı şu formatta yazdırın: "Sum: X" (burada X toplamdır).
Kopya kağıdı
Diziler fonksiyonlara referans yoluyla (ilk elemanın bellek adresi) aktarılır:
void displayArray(int arr[], int size) {
for(int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}Fonksiyonu dizi adı ve boyutuyla çağırın:
int numbers[5] = {10, 20, 30, 40, 50};
displayArray(numbers, 5);Fonksiyon içinde dizide yapılan değişiklikler orijinal diziyi etkiler:
void doubleValues(int arr[], int size) {
for(int i = 0; i < size; i++) {
arr[i] = arr[i] * 2;
}
}Kendin dene
#include <stdio.h>
// sumArray fonksiyonunuzu buraya yazın
int main() {
int n;
scanf("%d", &n);
int arr[n];
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// sumArray fonksiyonunu çağırın ve sonucu yazdırın
return 0;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Fundamentals bölümündeki tüm dersler
2Değişkenler
Veri TipleriTam Sayı (Integer)Float - DoubleKarakterlerBooleanlarSabitlerprintf TemelleriDeğişken İsimlendirme KurallarıTip Dönüşümü Bölüm 1Tip Dönüşümü Bölüm 2Özet Meydan Okuması5Giriş ve Çıkış
Format Belirleyicilerscanf TemelleriTekrar Meydan Okuması #1Giriş DoğrulamaTekrar Meydan Okuması #28Diziler
Dizi TanımlamaElemanlara ErişimElemanları DeğiştirmeÇok Boyutlu DizilerTekrar Görevi #1Fonksiyon Argümanı Olarak DizilerDizi AlgoritmalarıTekrar Görevi #23Operatörler
Aritmetik OperatörlerModül OperatörüArtırma/AzaltmaAtama Operatörleriİlişkisel OperatörlerMantıksal Operatörler Bölüm 1Mantıksal Operatörler Bölüm 2Mantıksal Operatörler Bölüm 3Özet Meydan Okuması