Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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ü void
iç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.