Her C programı bir işlevler topluluğudur. Bu yeniden kullanılabilir kod parçaları hakkında, bunların nasıl tanımlanacağından void'in ne anlama geldiğine kadar her şeyi öğrenin.
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.
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?
C programlamadaBir 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:
intadd(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:
intadd(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
// Function prototype
intadd(int a, int b);intmain(){
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);
return0;
}
// Function definition
intadd(int a, int b){
return a + b;
}
Bu üç adımı izleyerek (fonksiyonun bildirilmesi, uygulanmasının sağlanması ve çağrılması) uygun argümanlarla — sisteminizdeki çeşitli görevleri gerçekleştirmek için işlevleri etkili bir şekilde kullanabilirsiniz. programı.
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.
Örneğin:
#include
intsquare(int num){
num = num * num;
return num;
}intmain(){
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);
return0;
}
- Kare fonksiyonu bir tamsayı parametresi alır, sayı.
- 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, Xve ona 5 değerini atar.
- Daha sonra x'in değerini ileterek kare fonksiyonunu çağırır. Sonucu ikinci bir değişkene atar, sen.
- İş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
voidsquare(int *num){
*num = *num * *num;
}intmain(){
int x = 5;
square(&x);
// Output: x after function call: 25
printf("x after function call: %d\n", x);
return0;
}
- kare işlev bir tamsayı işaretçisi alır (dahili *) parametre, sayı. Bir değer döndürmez.
- Kare fonksiyonu, verilen değerin karesini hesaplar. sayı 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, Xve 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 *sayı 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.
Diğer dillerde genellikle C'nin işaretçilerinin eşdeğeri bulunur, ancak genellikle daha yüksek düzeyde çalışırlar. Bir örnek: C#'ın out değişkenleri desteği.
Geçersiz İşlevler
C programlamadaki geçersiz işlevler, değer döndürmeyen işlevlerdir. Sonuç üretmeden eylemleri veya görevleri gerçekleştirmek için bunları kullanın. Referans yoluyla geçiş kullanarak parametrelerini değiştirebilirler, ancak bunu yapmak zorunda değiller.
İşte geçersiz bir işlevin bir örneği:
#include
// Void function with no parameters
voidgreet(){
printf("Hello, MUO!");
}intmain(){
// Call the void function, output: "Hello, MUO!"
greet();
return0;
}
Void işlevleri, bir dönüş değeri gerektirmeden eylemleri gerçekleştirmek, mesajları yazdırmak, verileri değiştirmek veya görevleri gerçekleştirmek için kullanışlıdır.
C Programlamadaki İşlevleri Keşfedin
Fonksiyonların oluşturulması yoluyla pratik yapmak, C programlamadaki anlayışınızı ve uygulama anlayışınızı geliştirir. Ayrıca kodun okunabilirliğini ve bakım kolaylığını artırır. Avantajlarını ortaya çıkarmak için çeşitli fonksiyon uygulamalarına dalın.
C fonksiyonlarının temellerine hakim olduğunuzda ve kendinize meydan okumak istediğinizde özyinelemeyi derinlemesine incelemeyi düşünün.