C Fonksiyonlarına Giriş

C Fonksiyonlarına Giriş
Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi yaptığınızda ortaklık komisyonu kazanabiliriz. Devamını oku.

Basit örneklerle temel C sözdizimini ele almış olabilirsiniz ve şimdi daha büyük, gerçek dünya programlarını nasıl oluşturacağınızı merak ediyor olabilirsiniz. Başlangıç ​​olarak kodunuzu minimum tekrarla verimli bölümler halinde düzenlemek isteyeceksiniz. Çoğu dilde olduğu gibi C'de de sorunlarınızın cevabı fonksiyondur.





snapchatte engellenip engellenmediğini nasıl anlarsın
MUO Günün videosu İÇERİĞE DEVAM ETMEK İÇİN KAYDIRIN

C'de fonksiyon oluşturmak ve kullanmak basittir ve birçok fayda sağlar. İşlevler, karmaşık programları daha küçük parçalara ayırmanıza olanak tanır. Hem orijinal programınızda hem de ilgili kitaplıklarda veya diğer ayrı programlarda yeniden kullanılabilirlik sağlarlar.





Başlamak için fonksiyon bildirimleri, prototipler, parametreler ve return ifadeleri hakkında bilgi edinmeniz gerekir.





C'de Fonksiyonlar Nelerdir?

  Bir programlama dilindeki kodu gösteren bir ekran

C programlamada Bir işlev, siz istediğinizde bir şey yapan, kodun adlandırılmış bir bölümüdür. Kodunuzu düzenli tutmanıza yardımcı olur ve aynı eylemi kendinizi tekrarlamadan birden çok kez kullanmanıza olanak tanır.

En basit örnek, halihazırda kullanmakta olduğunuz örnektir: main() işlevi. Main işlevi özellikle özeldir çünkü herhangi bir C programı için ana giriş noktası görevi görür. Ayrıca başka birisinin önceden yazmış olduğu kütüphane işlevlerini de kullanabilir veya kendi kullanıcı tanımlı işlevlerinizi yazabilirsiniz.



İşlevler: Bildirme, Tanımlama ve Çağırma

Bu üç husus, işlevlerin kullanımında temeldir.

İşlev Beyanı

Bu, bir işlevin adı, dönüş türü ve parametreleri hakkında bilgi sağlayarak tam tanımından önce kullanılmasına olanak sağlar. Aynı zamanda fonksiyon prototipi olarak da adlandırılır. Bu basit sözdizimini takip eder:





 return_type function_name(parameters);

Nerede:

  • dönüş_tipi işlevin döndürdüğü değerin veri türüdür. Geçerli herhangi bir C veri türü olabilir veya geçersiz eğer fonksiyon bir değer döndürmüyorsa.
  • fonksiyon adı fonksiyona verdiğiniz addır. Bunu daha sonra işlevi çağırmak için kullanacaksınız.
  • parametreler varsa işlevin kabul ettiği giriş parametrelerinin listesidir. Her parametre, bir veri türünden ve ardından virgülle ayrılmış bir parametre adından oluşur.

Örneğin, burada basit bir işlev bildirimi var:





sosyal medya siteleri nasıl para kazanıyor
 int add(int a, int b);

Fonksiyon Tanımı

Bir işlevi çağırdığınızda, tanımında belirtilen kodu çalıştırır. İşlevin adını, dönüş türünü, parametre listesini ve davranışını tanımlayan ifadeleri içerir. İşte sözdizimi:

 return_type function_name(parameters) { 
    // Function body - code that defines what the function does
    // Return a value if applicable
    return value;
}

Sözdiziminin bazı kısımlarını parçalayalım:

İşlev gövdesi : Kıvrımlı parantez içine alınmış kod bloğudur {} . Fonksiyonun çağrıldığında ne yapacağını tanımlayan talimatları içerir.

İade bildirimi : Fonksiyonun dışında bir dönüş türü varsa geçersiz , geri dönmek ifadesi arayana bir değer gönderir. Bu değer belirtilen dönüş türüyle eşleşmelidir.

İşte basit bir fonksiyon tanımı örneği:

 int add(int a, int b) { 
    int sum = a + b;
    return sum;
}

İşlev Çağrısı

Tıpkı yemek pişirmede olduğu gibi, bir tarifiniz (işlev tanımı) ve bazı malzemeleriniz (argümanlar) olabilir, ancak yine de sonuç almak için talimatları izlemeniz gerekir. Bir işlev çağrısı, işlevi verilen argümanlarla çalıştırır; işte sözdizimi:

 return_type result = function_name(arguments);

argümanlar : Bunlar, fonksiyona giriş olarak ilettiğiniz değerler veya ifadelerdir. Her argümanı virgülle ayırın. Bağımsız değişkenlerin sayısı, sırası ve veri türleri, işlevin parametre listesiyle eşleşmelidir.

sonuç : Fonksiyonun dışında bir dönüş türü varsa geçersiz , uygun veri tipindeki bir değişkeni kullanarak döndürülen değeri yakalayabilirsiniz.

İşte bir işlev çağrısı örneği:

 #include <stdio.h> 

// Function prototype
int add(int a, int b);

int main() {
    int x = 5, y = 3;

    // Call the function and store the result in 'sum'
    int sum = add(x, y);
    printf("The sum of %d and %d is %d\n", x, y, sum);
    return 0;
}

// Function definition
int add(int a, int b) {
    return a + b;
}

Bu üç adımı (fonksiyonun bildirilmesi, uygulanmasının sağlanması ve uygun argümanlarla çağrılması) takip ederek, programınızdaki çeşitli görevleri gerçekleştirmek için fonksiyonları etkili bir şekilde kullanabilirsiniz.

Fonksiyon Parametreleri ve Dönüş Değerleri

Parametreler, işlevin bildiriminde veya tanımında bildirilen ve çağrıldığında işleve iletilen değerler için yer tutucu görevi gören değişkenlerdir. İşleve veri aktarmanıza, işlevin bu verilerle çalışmasına ve işlemesine olanak tanır. Dönüş değerleri, bir işlevin ürettiği ve çağırana geri gönderdiği değerlerdir.

Parametreleri geçirmenin iki yöntemi vardır.

Değere Göre Geç

Bu yaklaşımla, bir işlev çağrısı asıl argümanın değerini işlevin parametresine kopyalar. İşlev içindeki parametrede yapılan değişiklikler orijinal bağımsız değişkeni etkilemez.

aygıt tanımlayıcı isteği başarısız oldu Windows 10

Örneğin:

 #include <stdio.h> 

int square(int num) {
    num = num * num;
    return num;
}

int main() {
    int x = 5;
    int y = square(x);

    // Output: x and y after function call: 5 25
    printf("x and y after function call: %d %d\n", x, y);

    return 0;
}
  • Kare fonksiyonu bir tamsayı parametresi alır, birde .
  • Kare işlevi sayının karesini hesaplar, değerini günceller ve bu yeni değeri döndürür.
  • Ana işlev bir tamsayı değişkeni bildirir, X ve ona 5 değerini atar.
  • Daha sonra x'in değerini ileterek kare fonksiyonunu çağırır. Sonucu ikinci bir değişkene atar, Ve .
  • İşlev çağrısından sonra main, x ve y değerlerini yazdırır. Kare içindeki num parametresinin değiştirilmesi orijinal x'i etkilemediğinden x değeri aynı kalır.

Referansa Göre Geç

Bu yaklaşımı kullanarak, bir değerin hafıza adresini (işaretçi) bir fonksiyona iletirsiniz. Fonksiyonun içindeki parametrede yapılan değişiklikler, fonksiyonun dışındaki orijinal değeri etkiler.

Parametre olarak kullanımları da dahil olmak üzere işaretçiler, Python gibi bir dilden farklı kılan C .

 #include <stdio.h> 

void square(int *num) {
    *num = *num * *num;
}

int main() {
    int x = 5;
    square(&x);

    // Output: x after function call: 25
    printf("x after function call: %d\n", x);
    return 0;
}
  • kare işlev bir tamsayı işaretçisi alır ( dahili * ) parametre, birde . Bir değer döndürmez.
  • Kare fonksiyonu, verilen değerin karesini hesaplar. birde işaretçi referans kaldırma operatörünü kullanarak bu değeri içerir ve günceller, * .
  • ana fonksiyon bir tamsayı değişkeni bildirir, X , ve ona değeri atar 5 .
  • Daha sonra şunu çağırır: kare bir işaretçiyle işlev görür X operatörünün adresini kullanarak: &X .
  • İşlev çağrısından sonra main, değerini yazdırır. X , şimdi olan 25 değişikliklerden bu yana *birde içinde kare işlev orijinali etkiler X .

Özetle, iki yöntem arasındaki temel fark, fonksiyonun içindeki parametrede yapılan değişikliklerin, fonksiyonun dışındaki orijinal değeri nasıl etkilediğidir. Değere göre geçiş bir kopya oluştururken, referansa göre geçiş (işaretçi) orijinal değerin doğrudan değiştirilmesine izin verir.