# C Öğreticisi 10 (Fonksiyonlar)

Bu yazılar [www.tutorialspoint.com/cprogramming/](http://www.tutorialspoint.com/cprogramming/) adresindeki yazı dizilerinin çevirileridir.

Fonksiyon, birlikte bir görevi gerçekleştiren bir grup deyimdir. Her C programı, en az bir fonksiyona sahiptir: “ main() “. Ve önemsiz programların tümü ek fonksiyonları tanımlayabilir.

Kodunuzu ayrı fonksiyonlara bölebilirsiniz. Kodunuzu farklı fonksiyonlara nasıl böldüğünüz size bağlıdır, ama mantıksal olarak bölme işlemi her fonksiyonun belirli bir görevi yerine getireceği şeklindedir.

Bir fonksiyonun tanımlanması derleyiciye bir fonksiyonun ismi, dönüş tipi ve parametreleri hakkında bilgi verir. Bir fonksiyonu tanımı, fonksiyonun gerçek iskeletini sağlar.

C standart kütüphanesi, programınızın arayabileceği sayısız yerleşik fonksiyon sunar. Örneğin, iki karakter katarını(string) birleştirmek için strcat(), bir hafıza konumunu başka bir yere kopyalamak için memcpy() ve daha birçok fonksiyon…

Bir fonksiyon ayrıca bir yöntem veya alt metot olarak da ifade edilebilir.

## Fonksiyon Tanımlama <a href="#id-2f5f" id="id-2f5f"></a>

C dilinde genel fonksiyon tanımlaması şu şekildedir -

> dönüş\_tipi fonksiyon\_adı( parametre listesi ) {
>
> fonksiyondaki işlemler;
>
> }

C programlamada bir fonksiyon tanımı bir fonksiyon başlığı ve bir fonksiyon gövdesinden oluşur. İşte bir fonksiyonun tüm parçaları -

**Dönüş Tipi** — Bir fonksiyon bir değer döndürebilir. dönüş tipi, fonksiyonun döndürdüğü değerin veri türüdür. Bazı fonksiyonlar istenen işlemleri bir değer döndürmeden gerçekleştirir. Bu durumda fonksiyonun dönüş tipi, void anahtar sözcüğüdür.

**Fonksiyon Adı** — Bu, fonksiyonun gerçek adıdır. Fonksiyon adı ve parametre listesi birlikte fonksiyon imzasını oluşturur.

**Parametreler** — Bir parametre yer tutucuya benzer. Bir fonksiyon çağrıldığında, parametreye bir değer iletirsiniz. Bu değere gerçek parametre ya da argüman adı verilir. Parametre listesi, bir fonksiyonun parametrelerinin tipini, sırasını ve sayısını gösterir. Parametreler isteğe bağlıdır; yani, bir fonksiyon parametre içermeyebilir.

**Fonksiyon Gövdesi** — Fonksiyon gövdesi, fonksiyonun ne yaptığını tanımlayan bir ifadeler koleksiyonu içerir.

## Örnek <a href="#id-7aa8" id="id-7aa8"></a>

Aşağıda verilen, max () adlı bir fonksiyonun kaynak kodudur. Bu fonksiyon num1 ve num2 parametresini alır ve ikisi arasındaki maksimum değeri döndürür -

> /\* iki sayı arasındaki maksimum değeri döndüren fonksiyon\*/
>
> int max(int num1, int num2) {
>
> /\* yerel değişken tanımlaması \*/
>
> int sonuc;
>
> if (num1 > num2)
>
> sonuc = num1;
>
> else
>
> sonuc = num2;
>
> return sonuc;
>
> }

## Fonksiyon Bildirimi <a href="#id-3b6e" id="id-3b6e"></a>

Bir fonksiyon bildirimi derleyiciye bir fonksiyon adı ve fonksiyonun nasıl çağrılacağı hakkında bilgi verir. Fonksiyonun gerçek gövdesi ayrı ayrı tanımlanabilir.

Bir fonksiyon bildiriminde aşağıdaki bölümler bulunur -

> dönüşTipi fonksiyonAdı( parametre listesi );

Yukarıdaki gibi max() fonksiyonunu tanımlarsak, fonksiyon bildirimi aşağıdaki gibi olur -

> int max(int num1, int num2);

Fonksiyon bildiriminde parametre isimleri önemli değildir, sadece tipleri gereklidir, aşağıdaki değer bildirimi o şekildedir -

> int max(int, int);

Fonksiyon bildirimi(declaration), fonksiyon başka bir dosyaya tanımlanıp çağrıldığında gerekli olur. Bu durumda, fonksiyonu tepede dosyanın çağrıldığı yerde bildirmelisiniz.

## Fonksiyonu Çağırmak <a href="#eb95" id="eb95"></a>

C fonksiyonu yaratırken, fonksiyonun ne yapacağını anlatan bir tanım vermelisiniz. Fonksiyonu kullanmak için, fonksiyonu tanımlandığı yerden çağırmalısınız.

Program bir fonksiyon çağırırken, program kontrolü çağrılan fonksiyona aktarılır. Çağrılan fonksiyon tanımlanmış görevi çalıştırır ve dönüş(return) durumu çalıştıysa veya fonksiyon bitiminde kullanılan kapalı köşeli parantez kullanıldığında program kontrolü ana(main) programa geri döner.

Bir fonksiyonu çağırmak için, fonksiyon ismiyle gerekli parametrelere de ihtiyacınız vardır, eğer fonksiyon fonksiyon bir değer döndürüyorsa, dönen değeri tutabilirsiniz. Örneğin -

[Live Demo](http://tpcg.io/T4MSFr)

> \#include \<stdio.h>
>
> /\* fonksiyon bildirimi \*/
>
> int max(int num1, int num2);
>
> int main () {
>
> /\* yerel değişken tanımalması \*/
>
> int a = 100;
>
> int b = 200;
>
> int ret;
>
> /\* max değeri almak için fonksiyon çağrımı \*/
>
> ret = max(a, b);
>
> printf( “Max değer: %d\n”, ret );
>
> return 0;
>
> }
>
> /\* fonksiyon max değeri 2 değer arasından döndürüyor \*/
>
> int max(int num1, int num2) {
>
> /\* yerel değişken tanımlaması \*/
>
> int sonuc;
>
> if (num1 > num2)
>
> sonuc = num1;
>
> else
>
> sonuc = num2;
>
> return sonuc;
>
> }

main() ile max()’ın değerini tuttuk ve kaynak kodu derledik. Çalışma sona erdiğinde, sonuç şöyle olacaktır -

Max değer : 200

## Fonksiyon Argümanları <a href="#id-84b8" id="id-84b8"></a>

Fonksiyon argümanları kullanıyorsa, argümanların değerlerini bildiren değişkenler tanımlanmalıdır. Bu değişkenler fonksiyonun formal parametreleri olarak adlandırılır.

Formal parametreler fonksiyondaki diğer yerel değişkenler gibi davranır. Girişte yaratılır ve fonksiyonun çıkışında yok edilir.

Fonksiyon çağırırken, argümanlarla fonksiyon çağırmanın 2 yolu vardır -![](https://miro.medium.com/max/60/1*pe1FDApn16jgZI761XNkmQ.png?q=20)![](https://miro.medium.com/max/3040/1*pe1FDApn16jgZI761XNkmQ.png)

Varsayılan olarak, C argümanları çağırırken değer ile çağırma yöntemini kullanır. Genel olarak, bu bir fonksiyon içindeki kodun, fonksiyonu çağırmak için kullanılan argümanları değiştiremeyeceği anlamına gelir.

<https://www.tutorialspoint.com/cprogramming/c_functions.htm>

*

[\
](https://medium.com/@aslihanakbiyik?source=follow_footer--------------------------follow_footer-)
