Aracılığıyla paylaş


Bağımsız değişkenler

Bir işlevdeki bağımsız değişkenler şu biçimde olabilir:

expression ( expression-listopt ) /* İşlev çağrısı */

İşlev çağrısında ifade-listesi, ifadelerin (virgülle ayrılmış) bir listesidir. Bu ikinci ifadelerin değerleri, işleve geçirilen bağımsız değişkenlerdir. İşlev bağımsız değişken almazsa, ifade-listesi anahtar sözcüğünü voidiçermelidir.

Bağımsız değişken temel, yapı, birleşim veya işaretçi türünde herhangi bir değer olabilir. Tüm bağımsız değişkenler değere göre geçirilir. Bu, bağımsız değişkenin bir kopyasının ilgili parametreye atandığı anlamına gelir. İşlev, geçirilen bağımsız değişkenin gerçek bellek konumunu bilmez. İşlev, ilk olarak türetildiği değişkeni etkilemeden bu kopyayı kullanır.

Dizileri veya işlevleri bağımsız değişkenler olarak geçiremezseniz de, bu öğelere işaretçileri geçirebilirsiniz. İşaretçiler, işlevin bir değere başvuruya göre erişmesi için bir yöntem sağlar. Bir değişken işaretçisi değişkenin adresini tuttuğu için işlev değişkenin değerine erişmek amacıyla bu adresi kullanabilir. İşaretçi bağımsız değişkenleri, diziler ve işlevler bağımsız değişkenler olarak geçirilemese de bir işlevin dizilere ve işlevlere erişmesini sağlar.

Bağımsız değişkenlerin değerlendirilme sırası, farklı derleyiciler ve farklı iyileştirme düzeyleri altında değişebilir. Bununla birlikte, işlev girilmeden önce bağımsız değişkenler ve yan etkileri tamamen değerlendirilir. Yan etkiler hakkında bilgi için bkz. Yan Etkiler.

İşlev çağrısındaki ifade-listesi değerlendirilir ve işlev çağrısındaki her bağımsız değişkende normal aritmetik dönüştürmeler gerçekleştirilir. Bir prototip varsa, sonuçta elde edilen bağımsız değişken türü prototipin ilgili parametresiyle karşılaştırılır. Bunlar eşleşmiyorsa, bir dönüştürme işlemi gerçekleştirilir veya bir tanılama iletisi verilir. Parametreler de olağan aritmetik dönüştürmelerden geçer.

İfade listesindeki ifadelerin sayısı, işlevin prototipi veya tanımı değişken sayıda bağımsız değişken belirtmediği sürece parametre sayısıyla eşleşmelidir. Bu durumda, derleyici parametreler listesinde olabildiğince çok bağımsız değişkeni ve tür adlarını denetler ve bunları gerekirse yukarıda açıklandığı gibi dönüştürür. Daha fazla bilgi için bkz . Değişken Sayıda Bağımsız Değişken içeren çağrılar .

Prototipin parametre listesi yalnızca void anahtar sözcüğünü içeriyorsa, derleyici işlev çağrısında sıfır bağımsız değişken ve tanımda sıfır parametre bekler. Herhangi bir bağımsız değişken bulursa, bir tanılama iletisi verilir.

Örnek

Bu örnek, işaretçileri bağımsız değişkenler olarak kullanır:

int main()
{
    /* Function prototype */

    void swap( int *num1, int *num2 );
    int x, y;
    .
    .
    .
    swap( &x, &y );  /* Function call */
}

/* Function definition */

void swap( int *num1, int *num2 )
{
    int t;

    t = *num1;
    *num1 = *num2;
    *num2 = t;
}

Bu örnekte, swap işlevi main'de iki bağımsız değişkeni olacak şekilde bildirilmiştir; her ikisi de num1 değerlerinin işaretçileri olan bu bağımsız değişkenler, sırasıyla num2 ve int tanımlayıcılarıyla temsil edilir. Prototip stili tanımdaki num1 ve num2 parametreleri de int türü değerlerin işaretçileri olarak bildirilmiştir.

İşlev çağrısında

swap( &x, &y )

x adresi num1 içinde, y adresi ise num2 içinde depolanır. Artık aynı konumda iki ad veya "diğer ad" vardır. *num1 öğesindeki *num2 ve swap başvuruları, x öğesinde y ve main'nin etkili başvurularıdır. swap içindeki atamalar, x ve y içeriğini birbiriyle değiştirir. Bu nedenle, return deyimine gerek yoktur.

Derleyici, swap prototipi her parametreye yönelik bağımsız değişken türleri içerdiğinden swap bağımsız değişkenleri için tür denetimi gerçekleştirir. Prototip ve tanımın parantez içindeki tanımlayıcıları, aynı veya farklı olabilir. Önemli olan, hem prototipte hem de tanımda bağımsız değişken türlerinin parametre listelerindeki türlerle eşleşmesidir.

Ayrıca bkz.

İşlev Çağrıları